5

我正在使用 Javascript 的 Date 对象将字符串解析为毫秒时间戳。我正在使用 Date.parse(),我正在解析的字符串格式如下:“2012-07-06 12:59:36-0600”

Date.parse 在 Chrome 中表现很好,可以解析为我预期的正确时间戳。但是,当我通过 Date.parse() 运行字符串时,所有其他浏览器都会返回“NaN”。

我知道 Date 对象实现是特定于浏览器的,但我想找到一个能够为任何浏览器解析这种类型的字符串的 javascript 解决方案。关于我可以在Javascript中使用什么来实现这一点的任何建议?

4

3 回答 3

7

将输入转换为有效的ISO 8601

Date.parse("2012-07-06 12:59:36-0600".replace(' ', 'T'));

这在 Firefox 中经过测试(并且有效)。

笔记:

请注意,虽然在日期字符串解析期间使用时区说明符来正确解释参数,但它们不会影响返回的值,它始终是 1970 年 1 月 1 日 00:00:00 UTC 和表示的时间点之间的毫秒数由论据。

于 2012-07-06T19:23:37.590 回答
1

如果格式一致,可以自己解析:

var date = "2012-07-06 12:59:36-0600";
function parseDatetime(input) {
    var match = input.match(/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})([-+]\d{4})/);
    match.shift(); // discard the "full match" index
    match[2]--;
    match[4] += parseInt(match[6],10);
    return new Date(match[0],match[1],match[2],match[3],match[4],match[5]);
}
于 2012-07-06T19:20:06.667 回答
1

你试过DateJS吗?也许您不想添加另一个库,但它会解决您的跨浏览器问题。

于 2012-07-06T19:17:52.943 回答