В IE9 Quirks Mode Date.parse возвращает NaN

Я пытаюсь понять, почему Date.parse (javascript) возвращает NaN при применении к, казалось бы, действительной строке даты ISO 8601, когда IE9 находится в режиме Quirks. Он отлично работает в стандартном режиме.

//ReturnsNaN in Quirks Mode, 1270574382557 in Standards Mode
document.write(Date.parse("2010-04-06T17:19:42.557"));  

//Returns NaN in Quirks Mode, 1270512000000 in Standards Mode
document.write(Date.parse("2010-04-06"));       

Напротив, следующее работает как в Quirks, так и в Standards для меня

//Returns 1270549182000 in both Quirks and Standards Modes  
document.write(Date.parse("2010/04/06T17:19:42"));  

Кто-нибудь еще видит это поведение? Если да, то есть идеи, почему Date.parse возвращает NaN?


person dda    schedule 17.11.2011    source источник
comment
Возможно, это поможет, а возможно, и нет: два похожих случая Date.parse возвращают разные результаты.   -  person sdleihssirhc    schedule 17.11.2011


Ответы (1)


Прежде всего, вы должны понимать, что режим quirks — это, по сути, режим совместимости с IE5.

Это вызвано отсутствием действительной декларации. Основной эффект заключается в том, что он заставляет браузер использовать блочную модель IE5, а это означает, что все ваши отступы, поля и границы, а также все остальное, что влияет на размер блока, будут неправильными.

Таким образом, ваш Date.parse не работает, потому что в те даты не было такой функции - «разбирать дату ISO 8601».

person Pavel Podlipensky    schedule 17.11.2011
comment
Попался. Спасибо за информацию! Я знал о бокс-модели, но не знал, что причуды влияют на даты и т. д. - person dda; 18.11.2011