在Mozilla Firefox中,JavaScript中的Date.parse()无法正常工作

4
我有一个字符串日期时间值"01-01-2013 12:00:00 AM",使用Date.parse("01-01-2013 12:00:00 AM")解析为DateTime类型。在Google Chrome和IE浏览器中可以正常工作,但在Firefox中无法正常工作。请问如何在Mozilla Firefox中将此特定字符串解析为dateTime值?
谢谢, Bharathi.

我的回答有帮到您吗?如果有的话,请记得接受它。如果没有,请告诉我! - elixenide
1个回答

5

TL;DR 在这种情况下,您正在使用无效的日期格式,Chrome和IE恰好处理。

完整回答:

规范只要求JavaScript实现在Date.parse中识别某些格式。具体来说,

它接受RFC2822 / IETF日期语法(RFC2822第3.3节),例如 "Mon, 25 Dec 1995 13:30:00 GMT"。它了解美国大陆 时区缩写,但对于一般用途,请使用时区偏移量, 例如,“Mon, 25 Dec 1995 13:30:00 +0430”(4小时30分钟 东经格林威治子午线)。如果没有指定时区并且 字符串处于ES5可以识别的ISO格式中,则默认为UTC。GMT 和UTC被视为等效的。本地时区是用于 解释不包含时区的RFC2822第3.3节格式的参数 信息(或任何未识别为ES5中的ISO 8601格式)。

ECMAScript 5 ISO-8601格式支持

日期时间字符串可以采用ISO 8601格式。例如, “2011-10-10”(仅日期)或“2011-10-10T14:48:00”(日期和时间)可以 被传递并解析。

您的示例01-01-2013 12:00:00 AM不是这些格式之一。一些浏览器可能会解析它,具体取决于它们使用的JavaScript引擎,但它是非标准的。Chrome和IE恰好识别它,但Firefox返回 NaN ,这符合规范:

ECMAScript规范说明:如果字符串不符合 标准格式,函数可以回退到任何实现特定的启发式算法或实现特定的解析。 ISO格式字符串中包含无法识别的字符串或日期将导致Date.parse()返回 NaN

有关更多详细信息,请参见此文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接