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

Bha*_*thi 4 javascript jquery datetime date

我有字符串 dateTime 值“01-01-2013 12:00:00 AM”并使用Date.parse("01-01-2013 12:00:00 AM"). 这在 Google Chrome 和 IE 浏览器中运行良好。但不适用于Firefox。任何人都可以帮助如何在Mozilla Firefox 中将此特定字符串解析为 dateTime 值。

谢谢,巴拉蒂。

eli*_*ide 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 规范规定:如果 String 不符合标准格式,该函数可能会回退到任何特定于实现的启发式或特定于实现的解析算法。无法识别的字符串或包含 ISO 格式字符串中非法元素值的日期将导致Date.parse()返回 NaN

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