我需要在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是很难理解的,所以我不知道这是最相似的格式。
是否与允许的格式示例的列表?
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
陷阱
有矩阵跨浏览器的不一致性 ,以及。
参考
这个问题好像是问“ 需要什么样的格式,让ECMSCript实现解析 ”。
在此之前的ECMAScript 5编(2011),分析是完全依赖于实现的。 即ECMAScript实现需要解析的形式可以概括为:
- ISO的单个(尽管略有修改的)版本8601扩展格式称为“ 日期时间字符串格式 ” ECMAScript中引入编5(2011)。 它不同于ISO 8601在该日期仅有的形式被视为UTC,而不是本地和时区偏移必须有小时和分钟之间的冒号。
- 由实现自身产生的格式的toString方法,这是在2018的ECMAScript标准化
- 通过实现自身产生的格式toUTCString方法,还规范ECMAScript中2018
任何其他格式的解析仍然依赖于实现和有差异,所以总的原则是“不使用内置的解析器”。