Tuesday, January 29th, 2008
Do you have a pretty date?
<>p>John Resig has created a little script to give you pretty dates that Web 2.0 know and love (thanks Rails):-
-
prettyDate("2008-01-28T20:24:17Z") // => "2 hours ago"
-
prettyDate("2008-01-27T22:24:17Z") // => "Yesterday"
-
prettyDate("2008-01-26T22:24:17Z") // => "2 days ago"
-
prettyDate("2008-01-14T22:24:17Z") // => "2 weeks ago"
-
The library is short and sweet:
-
-
/*
-
* JavaScript Pretty Date
-
* Copyright (c) 2008 John Resig (jquery.com)
-
* Licensed under the MIT license.
-
*/
-
-
// Takes an ISO time and returns a string representing how
-
// long ago the date represents.
-
function prettyDate(time){
-
var date = new Date((time || "").replace(/-/g,"/").replace(/[TZ]/g," ")),
-
diff = (((new Date()).getTime() - date.getTime()) / 1000),
-
day_diff = Math.floor(diff / 86400);
-
-
if ( isNaN(day_diff) || day_diff <0 || day_diff>= 31 )
-
return;
-
-
return day_diff == 0 && (
-
diff <60 && "just now" ||
-
diff <120 && "1 minute ago" ||
-
diff <3600 && Math.floor( diff / 60 ) + " minutes ago" ||
-
diff <7200 && "1 hour ago" ||
-
diff <86400 && Math.floor( diff / 3600 ) + " hours ago") ||
-
day_diff == 1 && "Yesterday" ||
-
day_diff <7 && day_diff + " days ago" ||
-
day_diff <31 && Math.ceil( day_diff / 7 ) + " weeks ago";
-
}
-
Related Content:











If you call using logical operators instead of if-else statements pretty, and not used once but eight times in the same statement, then I have nothing to say.
I should also add that it’s just like those people who elect to reduce an equation down for the sake of shortness or speed, at the cost of making the code nonintuitive. e.g.,
if(mouseUp && !(isDragging || isDropping) && (dataLoading || dataExists))
if(!(!mouseUp || isDragging && isDropping || dataLoading && dataExists)) //I saved 1 character!
I saw that, but I also saw http://www.datejs.com/ back on Nov. 28th.
I use a php script that I found off of PHP.net for that. I couldn’t see a reason why you would want a Javascript version, it simply slows the proccess of your app down. Javascript like could be done with less stress on the server and the user if it was done server side. Just a Though :)
@Jordan:
It’s really a matter of personal preference. That return statement is more readable to me than 8 if-elseif blocks, uses less lines / characters to edit, 1 return statement instead of 8, etc. And in the constant battle to minimize downloads, a few characters saved here and there makes a huge difference in the long run.
@Jordan
I agree with Bub, this version is more readable (and cleaner) and is easy enough to understand seeing as though John broke unique statements up into different lines.
@BillG123 – You do realize this does the exact opposite of that script?
For the Mootoolers out there:
check out Date.js and Date.Extras.js @ Clientside
thanks for this nice information on dates and javascript