Это потому, что формат даты, который вы указываете new Date()
, является нестандартным.Факт, что вы получаете что-то, потому что Safari делает вам одолжение.(См. Раздел 15.9.1.15 спецификации для допустимых форматов; в основном это упрощенный ISO-8601. И наличие любого стандарта для разбора строк даты / времени является относительно новым [5-е издание].)
Если вы используете стандартный конструктор, например, new Date (22034, 2, 1)
(месяцы начинаются с нуля, то есть 1 марта 22034 г.), он работает нормально.Вы можете проверить это следующим образом ( живая копия ):
display("With non-standard string: " + new Date("1 Mar 22034"));
display("Using standard constructor: " + new Date(22034, 2, 1));
Что для меня при использовании Safari для Windows приводит к:
С нестандартной строкой: Вт 28 февраля 22034 00:00:00 GMT + 0000 (стандартное время GMT)
Использование стандартного конструктора: ср. 01 марта 22034 00:00:00 GMT + 0000 (стандартное время GMT)
Как видите, в первой строке указана неправильная дата, а во второй строке указана правильная.
Стандартный конструктор также работает правильно в Chrome, Opera и Firefox (все в Ubuntu), IE6,IE7 и IE8: http://jsbin.com/ogiqu
Если бы действительно было так, что Safari не мог обработать эту дату (в отличие от не разбора нестандартной строки, которую вы дали ей надежно), это был бы удивительный SafariошибкаИз раздела 15.9.1.1 спецификации :
Время измеряется в ECMAScript в миллисекундах с 1 января 1970 года по UTC.В значениях времени високосные секунды игнорируются.Предполагается, что есть ровно 86 400 000 миллисекунд в день.Числовые значения ECMAScript могут представлять все целые числа от –9,007,199,254,740,991 до 9,007,199,254,740,991;этого диапазона достаточно, чтобы измерить время с точностью до миллисекунды для любого момента, который находится в пределах приблизительно 285 616 лет, либо вперед, либо назад, с 1 января 1970 г. UTC.
Но, как кажется, Safari отлично справляется с этим, когда выне просите, чтобы это пошло вне трассы, очевидно, проблема в коде синтаксического анализа для нестандартных строк.