Неверная строка преобразуется в дату - PullRequest
0 голосов
/ 02 ноября 2018

Привет, у меня есть строка «Windows-10», которая, когда я пытаюсь выполнить синтаксический анализ с помощью нового конструктора Date (), обрабатывается и выдает полностью действительную дату как «Пн 01 октября 2001 00:00:00 GMT + 0530 ( Стандартное время Индии) '

Я не знаю, почему это происходит, я также попробовал это сделать с другой строкой Windows, такой как «Windows-7», «Windows-99» и т. Д., И все они легко разбираются.

1 Ответ

0 голосов
/ 02 ноября 2018

Поведение, которое вы наблюдали, зависит от реализации, которая для конструктора one-arg Date(value) описана в спецификации ECMA-262 в главе 20.3.2.2 . Ваш пример перейдет к шагу 3.b.ii.1. в котором говорится, что строка будет проанализирована в соответствии с правилами, изложенными в главе 20.3.3.2 для метода Date.parse(string). Эта спецификация метода определяет:

Функция сначала пытается проанализировать формат строки в соответствии с правилами (включая расширенные годы), вызванными в формате строки даты и времени ( 20.3.1.16 ). Если строка не соответствует этому формату, функция может использовать эвристику, специфичную для реализации, или форматы даты, зависящие от реализации. Нераспознаваемые строки или даты, содержащие недопустимые значения элементов в формате String, должны заставить Date.parse вернуть NaN .

Поскольку ваши строки явно не соответствуют формату строки даты и времени, браузер возвращается к алгоритму, специфичному для реализации. Мой Chrome 70, например, возвращает объект Date для текущего времени, что соответствует вызову конструктора no-args Date(). IE11, с другой стороны, анализирует строку в NaN и возвращает объект Date со значением «недопустимая дата» .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...