Как преобразовать дату в RFC 3339 в объект даты в javascript (миллисекунды с 1970 года)
Календарь Google бросает в меня rfc3339, но все мои даты в тех миллисекундах с января 1970 года.
rfc3999:
2012-07-04T18:10:00.000+09:00
javascript текущее время: (новая дата ()).getTime():
1341346502585
Я предпочитаю миллисекунды, потому что я имею дело только с обратным отсчетом, а не с датами.
2 ответа
Date.parse
должно сработать:
Date.parse('2012-07-04T18:10:00.000+09:00')
Тем не менее, Date.parse
общеизвестно ненадежен во всех браузерах, поэтому вам нужно тщательно его протестировать. Если это не работает, то вот функция:
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 = new Date().getTimezoneOffset() + tzHour * 60 + tzMin;
return new Date(year, month - 1, day, hour, minute - tzOffset, second, msec);
}
Есть две библиотеки дат Javascript, которые вы можете попробовать:
Оба из них дадут вам функции, которые позволят вам анализировать и генерировать даты практически в любом формате.
Если вы много работаете с датами, вы захотите использовать одну из этих библиотек; это намного меньше хлопот, чем каждый раз, когда вы выполняете свои собственные функции.
Надеюсь, это поможет.