Posted by rp8 on Saturday, December 13, 2008
Here’s a simple script to parse the JSON date serialized by Rails in ISO 8601 format such as “2008-12-13T16:08:32-06:00”.
ISO 8601 DateTime:
var s = “2008-12-13T16:08:32-06:00”;
var date = Date2.parse(s);
date.toString() => Sat Dec 13 2008 16:08:32 GMT-0600 (CST)
date.toUTCString() => Sat, 13 Dec 2008 22:08:32 GMT
date.toLocaleString() => Sat 13 Dec 2008 04:08:32 PM CST
Date2.toString(date) => December 13, 2008
<script type="text/javascript">
function p(msg) {
document.write(msg + "<br/>");
}
var Date2 = {
Months: [["January","Jan"],["Febuary","Feb"],["March","Mar"],
["April","Apr"],["May","May"],["June","Jun"],
["July","Jul"],["August","Aug"],["September","Sep"],
["october","Oct"],["November","Nov"],["December","Dec"]],
parse: function(isoDate) {
var match = /(\d{4})-(\d{2})-(\d{2})T(\d{2}:\d{2}:\d{2})([+|-]?\d{2}:\d{2})/.exec(isoDate);
var date = new Date(match[1], match[2]-1, match[3]);
date = this.Months[date.getMonth()][1] + " " + date.getDate()
+ " " + date.getFullYear() + " " + match[4] + " GMT " + match[5].replace(/:/, "");
date = new Date(Date.parse(date));
return date;
},
toString: function(date) {
return this.Months[date.getMonth()][0] + " " + date.getDate() + ", " + date.getFullYear();
}
}
var s = "2008-12-13T16:08:32-06:00";
var date = Date2.parse(s);
p("ISO 8601 DateTime:");
p("var s = " + s + ";");
p("var date = Date2.parse(s);");
p("date.toString() => " + date.toString());
p("date.toUTCString() => " + date.toUTCString());
p("date.toLocaleString() => " + date.toLocaleString());
p("Date2.toString(date) => " + Date2.toString(date));
</script>