Шаблон yyyy-MM-dd
не является официально поддерживаемым форматом для конструктора Date
.Firefox, кажется, поддерживает это, но не рассчитывайте на то, что другие браузеры будут делать то же самое.
Вот некоторые из поддерживаемых строк, взятых с этого сайта :
- ММ-дд-гггг
- гггг / ММ / дд
- ММ / дд / гггг
- ММММ дд, гггг
- МММ дд, гггг
DateJS кажется хорошей библиотекой для анализа нестандартных форматов дат.
Редактировать : только что проверил Стандарт ECMA-262 .Цитирование из раздела 15.9.1.15:
Формат строки даты и времени
ECMAScript определяет формат обмена строк для даты и времени на основе упрощения расширенного формата ISO 8601.Формат выглядит следующим образом: ГГГГ-ММ-ДДЧЧ: мм: сс.сссZ Где следующие поля:
- ГГГГ - десятичные цифры года в григорианском календаре.
- "-" (hyphon) встречается буквально дважды в строке.
- MM - месяц года с 01 (январь) до 12 (декабрь).
- DD - это день месяца с 01 по 31.
- Буква «T» появляется буквально в строке, чтобы указать начало элемента времени.
- ЧЧ - количество полных часов, прошедших с полуночи в виде двух десятичных цифр.
- ":" (двоеточие) появляется буквально дважды в строке.
- мм - это количество полных минут с начала часа в виде двух десятичных цифр.
- ss - количество полных секунд с начала минуты в виде двух десятичных цифр.
- "."(точка) появляется буквально в строке.
- sss - это число полных миллисекунд с начала секунды в виде трех десятичных цифр.Оба "."и поле миллисекунд может быть опущено.
- Z - это смещение часового пояса, указанное как «Z» (для UTC) или «+» или «-», за которым следует выражение времени чч: мм
Этот формат включает в себяФормы только для даты:
Также включает только времяформы с дополнительным смещением часового пояса:
- THH: мм
- THH: мм: сс
- THH: мм: сс.ссс
Также включены «дата-время», которые могут представлять собой любую комбинацию из вышеперечисленного.
Итак, похоже, что YYYY-MM-DD включен в стандарт, но по какой-то причинеSafari не поддерживает его.
Обновление : после просмотра datejs документации , используя его, ваша проблема должна быть решена с помощью кода, подобного этому:
var myDate1 = Date.parseExact("29-11-2010", "dd-MM-yyyy");
var myDate2 = Date.parseExact("11-29-2010", "MM-dd-yyyy");
var myDate3 = Date.parseExact("2010-11-29", "yyyy-MM-dd");
var myDate4 = Date.parseExact("2010-29-11", "yyyy-dd-MM");