TimeAgo
by Santiago J
JavaScript
var seconds = 1e3;
var minutes = 60 * seconds;
var hours = 60 * minutes;
var days = 24 * hours;
var weeks = 7 * days;
var months = 30.4368 * days;
var years = 265 * days;
function interval(dt) {
if (isNaN(dt)) return "unknown time";
if (dt < seconds) {
return "an instant";
} else if (dt < minutes) {
return (dt/seconds|0) + " seconds";
} else if (dt < hours) {
return (dt/minutes|0) + " minutes";
} else if (dt < days) {
return (dt/hours|0) + " hours";
} else if (dt < months) {
return (dt/days|0) + " days";
} else if (dt < years) {
return (dt/months|0) + " months";
} else {
return (dt/years|0) + " years"
}
}
function timeAgo(date) {
return interval(Date.now() - date) + " ago";
}
var dates = {
now: new Date(Date.now()),
secondsAgo: new Date(Date.now() - 5*seconds),
minutesAgo: new Date(Date.now() - 15*minutes),
hoursAgo: new Date(Date.now() - 2*hours),
daysAgo: new Date(Date.now() - 2*days),
weeksAgo: new Date(Date.now() - 2*weeks),
monthsAgo: new Date(Date.now() - 2*months),
yearsAgo: new Date(Date.now() - 2*years),
};
function println(s) {
var line = document.createElement("div");
line.textContent = s;
document.body.appendChild(line);
}
println(timeAgo(dates.now));
println(timeAgo(dates.secondsAgo));
println(timeAgo(dates.minutesAgo));
println(timeAgo(dates.hoursAgo));
println(timeAgo(dates.daysAgo));
println(timeAgo(dates.weeksAgo));
println(timeAgo(dates.monthsAgo));
println(timeAgo(dates.yearsAgo));