How to convert date in RFC 3339 to the javascript date object(milliseconds since 1970)
Datetimes in that format, with 3 decimal places and a “T”, have well-defined behaviour when passed to Date.parse
or the Date
constructor:
console.log(Date.parse('2012-07-04T18:10:00.000+09:00'));
// 1341393000000 on all conforming engines
You have to be careful to always provide inputs that conform to the JavaScript specification, though, or you might unknowingly be falling back on implementation-defined parsing, which, being implementation-defined, isn’t reliable across browsers and environments. For those other formats, there are options like manual parsing with regular expressions:
var googleDate = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})\.(\d{3})([+-]\d{2}):(\d{2})$/;
function parseGoogleDate(d) {
var m = googleDate.exec(d);
var year = +m[1];
var month = +m[2];
var day = +m[3];
var hour = +m[4];
var minute = +m[5];
var second = +m[6];
var msec = +m[7];
var tzHour = +m[8];
var tzMin = +m[9];
var tzOffset = tzHour * 60 + tzMin;
return Date.UTC(year, month - 1, day, hour, minute - tzOffset, second, msec);
}
console.log(parseGoogleDate('2012-07-04T18:10:00.000+09:00'));
or full-featured libraries like Moment.js.
There are two Javascript date libraries that you could try:
Date.js
Moment.js
Both of these will give you functions that allow you to parse and generate dates in pretty much any format.
If you're working with dates a lot, you'll want to use use one of these libraries; it's a whole lot less hassle than rolling your own functions every time.
Hope that helps.