2015-08-07 6 views
-5

Я пытаюсь разобрать "NINE/MAR/2008" с использованием даты функции в JS, как:Как работает Date() в javascript?

new Date("NINE/MAR/2008") 

Это дает мне результат:

Сб мар 01 2008

Какая логика учитывает синтаксический анализ даты в JS?

+1

Вы пробовали «новую дату» («NINE/MAR/TWOTHOUSANDEIGHT») '? С серьезной записью функция 'Date' имеет ограниченный интеллект для понимания заданных форматов. Очевидно, он не понимает ваш «ДЕВЯТЬ». – VisioN

+0

Проверьте это [Дата] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date) – ozil

+0

Почему отрицательный голос? – olleh

ответ

4

The только форматов, что Date конструктора и Date.parse требуются спецификация для поддержки является:

  1. Один introduced by ECMAScript 5th edition в 2009 году, такие как 2015-04-29, которая должна была быть упрощенной версией ISO-8601 но они перепутались с часовыми поясами (fixed in ECMAScript 2015, но затем должны были быть внесены изменения еще в ECMAScript 2016) и

  2. Независимо от Date#toString выходов на этом движке JavaScript (который не указан).

двигатели Большинство JavaScript также разобрать mm/dd/yyyy (где те все номера   — всегда в формате США, месяц-первых), но это не указано поведение. Некоторые могут анализировать yyyy/mm/dd (обратите внимание на /, а не на -), но опять-таки это неопределенное поведение, и, в частности, некоторые двигатели могут интерпретировать его как UTC и другие как локальное время (и это важно, даже если это просто дата без времени на нем).

Все остальные синтаксические анализаторы должны выполняться с помощью собственного кода или кода в используемой вами библиотеке, например, MomentJS. Вы можете построить Date из его составных частей, используя long form of the constructor, например: new Date(2008, 2, 9) от 9 марта 2008 года (обратите внимание, что месяцы начинаются с 0 = январь).

Смежные вопросы