Как Вы в настоящее время анализируете даты ISO8601, например, 2010-02-23T23:04:48Z в JavaScript?
Некоторые браузеры возвращают NaN (включая Chrome) при использовании кода ниже, FF3.6 + работы все же.
Можно попробовать это здесь http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_parse
Попробуйте следующее: http://anentropic.wordpress.com/2009/06/25/javascript-iso8601-parser-and-pretty-dates/
По вопросу в заголовке: Не изначально (как вы тестировали :))
В ECMA-262 (3 / e) единственное требование для Date.parse
[ 15.9.4.2] - это двустороннее преобразование через .toString ()
и .toUTCString ()
не изменяет объект Date, то есть
Date.parse(x.toString()) == Date.parse(x.toUTCString()) == x
и оба .toString ()
[15.9.5.2] и .toUTCString ()
[15.9.5.42] зависят от реализации, поэтому какой формат Date.parse
может анализировать полностью не указано.
Как уже упоминалось, этого нет в спецификации 3-го издания. Однако он есть в спецификации 5-го издания, и я цитирую:
ECMAScript определяет формат обмена строками для даты и времени на основе упрощения расширенного формата ISO 8601. Формат выглядит следующим образом: ГГГГ-ММ-ДДТЧЧ: мм: ss.sssZ
Так что скоро он должен появиться в браузерах (IE9, Chrome 1, Firefox 4 - это по крайней мере некоторые из браузеров, поддерживающих даты ISO 8601. ). Если вы тем временем хотите реализовать решение, вы можете оптимизировать его, чтобы ваш сценарий мог использовать преимущества встроенного кода, если он доступен:
(function ()
{
if (isNaN(Date.parse("2010-02-23T23:04:48Z")))
{
var oldParse = Date.parse;
Date.parse = function (strTime)
{
// regex test strTime for ISO 8601, use oldParse if it isn't
// Use custom parser if it is.
}
}
})();