哪种日期格式符合IETF标准的RFC 2822时间戳?

时间:2013-02-16 20:23:16

标签: javascript date datetime rfc rfc2822

我需要在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很难理解,所以我不知道哪种格式最相似。

是否有包含允许格式示例的列表?

2 个答案:

答案 0 :(得分:15)

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

陷阱

还有一个cross-browser inconsistencies的矩阵。

<强>参考

答案 1 :(得分:0)

这个问题似乎在问“ ECMSCript实现需要解析什么格式”。

在ECMAScript Ed 5(2011)之前,解析完全取决于实现。要求ECMAScript实现解析的格式可以总结为:

  1. ECMAScript ed 5(2011)中引入了称为“ date time string format”的ISO 8601扩展格式的单个(尽管略有修改)版本。它与ISO 8601的区别在于,仅日期格式被视为UTC,而不是本地格式,并且时区偏移量在小时和分钟之间必须有一个冒号。
  2. 由实现自己的toString方法产生的格式,该格式已在ECMAScript 2018中进行了标准化
  3. 由实现本身的toUTCString方法产生的格式,也在ECMAScript 2018中进行了标准化

任何其他格式的解析都依赖于实现,并且存在差异,因此一般规则是“不要使用内置解析器”。