Assume that you're working with a timestamp (number of milliseconds since January 1, 1970), for example:
var t = +new Date;
If you want to make that a relative time like "10 minutes ago", you can use this simple function:
function format(timestamp){
var now = +new Date;
var diff = (now - timestamp)/1000;
if (diff < 60) return diff + ' seconds ago';
if ((diff/=60) < 60) return Math.floor(diff) + ' minutes ago';
if ((diff/=24) < 24) return Math.floor(diff) + ' hours ago';
if ((diff/=7) < 7) return Math.floor(diff) + ' days ago';
if ((diff/=4) < 4) return Math.floor(diff) + ' weeks ago';
var date = new Date(timestamp);
var month = ['January', 'February', 'March',
'April', 'May', 'June', 'July',
'August', 'September', 'October',
'November', 'December'][date.getMonth()];
var YEAR = 365*24*60*60;
var year = (now - timestamp < YEAR) ? '' : ' ' + date.getFullYear();
return (month) + ' ' + (date.getDate()) + year;
}
I hope you find this useful.
Update
Tinkering around, I noticed that blogger has this:function relative_time(time_value) {
var values = time_value.split(" ");
time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
var parsed_date = Date.parse(time_value);
var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
delta = delta + (relative_to.getTimezoneOffset() * 60);
if (delta < 60) {
return 'less than a minute ago';
} else if(delta < 120) {
return 'about a minute ago';
} else if(delta < (60*60)) {
return (parseInt(delta / 60)).toString() + ' minutes ago';
} else if(delta < (120*60)) {
return 'about an hour ago';
} else if(delta < (24*60*60)) {
return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
} else if(delta < (48*60*60)) {
return '1 day ago';
} else {
return (parseInt(delta / 86400)).toString() + ' days ago';
}
}
No comments:
Post a Comment