Какие форматы даты являются временными метками RFC 2822, совместимыми с IETF?

Мне нужно разобрать даты в JavaScript. Формат

[2 цифры день]/[2 цифры месяц]/[4 цифры год] [2 цифры час (режим 24)]:[2 цифры минуты]

Например, 16/02/2013 21:00

Но если я делаю new Date('16/02/2013 21:00').toString(), это дает 'Wed Apr 02 2014 21:00:00 GMT+0200 (Hora de verano romance)'.

Я предполагаю, что это потому, что мои даты не соответствуют Спецификации даты и времени IETF RFC 2822. Затем я должен преобразовать свою строку, и я хочу преобразовать ее в наиболее подходящий совместимый формат (потому что ее должно быть проще преобразовать). Но http://tools.ietf.org/html/rfc2822#page-14 трудно понять, поэтому я не знаю, какой формат наиболее похож.

Есть ли список с примерами разрешенных форматов?


person Oriol    schedule 16.02.2013    source источник
comment
RFC2822 допускает однозначное значение дня. Чего следует остерегаться.   -  person Philip Oakley    schedule 06.09.2018
comment
Обратите внимание, что начиная с ECMAScript 2017 существует 2 формата, поддерживаемых ECMA-262 для синтаксического анализа, все остальное зависит от реализации. Форматы указаны для Date.prototype.toString, toISOString (небольшая модификация расширенного стандарта ISO 8601). Реализации также должны поддерживать все, что они производят для toLocaleString, но сам формат не указывается. Также см. Почему Date.parse дает неверные результаты?   -  person RobG    schedule 01.08.2019


Ответы (2)


MSDN содержит несколько примеров допустимых форматов даты:

document.writeln((new Date("2010")).toUTCString()); 

document.writeln((new Date("2010-06")).toUTCString());

document.writeln((new Date("2010-06-09")).toUTCString());

 // Specifies Z, which indicates UTC time.
document.writeln((new Date("2010-06-09T15:20:00Z")).toUTCString());

 // Specifies -07:00 offset, which is equivalent to Pacific Daylight time.
document.writeln((new Date("2010-06-09T15:20:00-07:00")).toGMTString());

// Specifies a non-ISO Long date.
document.writeln((new Date("June 9, 2010")).toUTCString());

// Specifies a non-ISO Long date.
document.writeln((new Date("2010 June 9")).toUTCString());

// Specifies a non-ISO Short date and time.
document.writeln((new Date("6/9/2010 3:20 pm")).toUTCString());

// Output:
// Fri, 1 Jan 2010 00:00:00 UTC
// Tue, 1 Jun 2010 00:00:00 UTC
// Wed, 9 Jun 2010 00:00:00 UTC
// Wed, 9 Jun 2010 15:20:00 UTC
// Wed, 9 Jun 2010 22:20:00 UTC
// Wed, 9 Jun 2010 07:00:00 UTC
// Wed, 9 Jun 2010 07:00:00 UTC
// Wed, 9 Jun 2010 22:20:00 UTC

Гочки

Также существует матрица несоответствий между браузерами.

Ссылки

person Paul Sweatte    schedule 24.05.2013

Кажется, этот вопрос спрашивает: «Какие форматы должны анализироваться реализациями ECMAScript».

До ECMAScript Ed 5 (2011) синтаксический анализ полностью зависел от реализации. Форматы, которые должны анализироваться реализациями ECMAScript, можно резюмировать следующим образом:

  1. Единая (хотя и слегка измененная) версия расширенного формата ISO 8601, называемая "формат строки даты и времени», представленный в ECMAScript ed 5 (2011). Он отличается от ISO 8601 тем, что формы, содержащие только дату, обрабатываются как UTC, а не как локальные, а смещение часового пояса должно иметь двоеточие между часами и минутами.
  2. Формат, созданный собственной реализацией toString, который был стандартизирован в ECMAScript 2018.
  3. Формат, созданный собственной реализацией toUTCString, также стандартизованный в ECMAScript 2018.

Анализ любого другого формата зависит от реализации, и есть различия, поэтому общее правило таково: «не используйте встроенный анализатор».

person RobG    schedule 17.11.2018