【问题标题】:Date.parse() not working properly in Mozilla Firefox JavaScriptDate.parse() 在 Mozilla Firefox JavaScript 中无法正常工作
【发布时间】:2015-02-11 21:53:34
【问题描述】:

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

谢谢, 婆罗洲。

【问题讨论】:

  • 我的回答对您有帮助吗?如果是这样,请记住接受它。如果没有,请告诉我!

标签: javascript jquery date datetime


【解决方案1】:

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。格林威治标准时间 和 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.

更多详情请见this documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多