15

我需要在 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 日期和时间规范。然后,我应该转换我的字符串,并且我想将它转换为最相似的兼容格式(因为它应该更容易转换)。但是https://www.rfc-editor.org/rfc/rfc2822#page-14很难理解,所以不知道哪种格式最相似。

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

4

2 回答 2

17

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

陷阱

还有一个跨浏览器不一致的矩阵。

参考

于 2013-05-24T23:31:14.390 回答
2

这个问题似乎在问“ ECMAScript 实现需要解析哪些格式”。

在 ECMAScript Ed 5 (2011) 之前,解析完全依赖于实现。ECMAScript 实现需要解析的格式可以概括为:

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

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

于 2018-11-17T06:07:33.317 回答