You know that one piece of shitty code that always makes you cringe? Something along the lines of months = ['Jan', 'Feb' ....]; dateString = date.day()+’ ‘+months[date.month()];
Yeah that piece of code. Let’s talk about that.
A couple of days ago I caught myself writing code like that and red flags and alarms and air-raid sirens started going off in my head. I felt like that proverbial axe murderer reading my code who knows where I live was already breathing down my neck.
Scary situation that.
String -> Date
// all of this correctly returns a millisecond timestamp since unix epoch // the string argument can also be passed to the date constructor by the way (returns a correct Date object) Date.parse("Aug 9, 1995") Date.parse("Wed, 09 Aug 1995 00:00:00 GMT") Date.parse("Wed, 09 Aug 1995 00:00:00") Date.parse("Thu, 01 Jan 1970 00:00:00 GMT") Date.parse("Thu, 01 Jan 1970 00:00:00") Date.parse("Thu, 01 Jan 1970 00:00:00 GMT-0400")
Date -> String
Have a date and want a string? You’re shit out of luck son.
> var d = new Date() > d Mon, 12 Dec 2011 11:28:55 GMT > d.toString() 'Mon Dec 12 2011 12:28:55 GMT+0100 (CET)' > d.toDateString() 'Mon Dec 12 2011' > d.toISOString() '2011-12-12T11:28:55.401Z' > d.toJSON() '2011-12-12T11:28:55.401Z' > d.toGMTString() 'Mon, 12 Dec 2011 11:28:55 GMT' > d.toLocaleDateString() 'Monday, December 12, 2011' > d.toLocaleString() 'Mon Dec 12 2011 12:28:55 GMT+0100 (CET)' > d.toLocaleTimeString() '12:28:55' > d.toString() 'Mon Dec 12 2011 12:28:55 GMT+0100 (CET)' > d.toTimeString() '12:28:55 GMT+0100 (CET)' > d.toUTCString() 'Mon, 12 Dec 2011 11:28:55 GMT'
Notice how none of those functions accept a format parameter? Sure, you could get those strings and hack them apart to create a string formatted to your liking … but I’m not sure that’s the ideal approach.
And let’s not even get into wanting to coerce a 12-hour time format out of this thing. Perhaps if your computer is situated in the US the localeString would return that?
However I was able to find a jquery plugin that implements a rough strftime function, although it doesn’t seem to have been actively worked on for the past three years and there are many things missing.