1

我遇到了来自 Firefox 的奇怪结果。使用以下格式:

2013/01/01 00:00:00-0000

对于我的约会,我在时区变为“正数”时遇到了问题。例如。

new Date('2013/01/01 05:00:00-0000')
Date { Tue Jan 01 2013 00:00:00 GMT-0500 (EST) }

但。

new Date('2013/01/01 05:00:00+0100')
Date { Invalid Date }

我希望得到:

日期 { 2012 年 12 月 31 日星期一 23:00:00 GMT-0500 (EST) }

看来这+是导致问题的原因,如果我不能使用 GMT 以东的时区,这似乎是一个相当大的问题。

编辑:添加了http://jsfiddle.net/utm4f/

在 Firefox 中运行,它将返回无效日期(我在 OS X 10.8.3 上运行 Firefox 20)

4

2 回答 2

0

您可能希望改用 ISO8601 值,例如:

2013-12-31T01:23:45-07:00

ISO 日期解析适用于所有较新的浏览器,但在一些较旧的浏览器上会失败,尤其是 IE8。这里有一个很好的关于浏览器支持的描述以及旧浏览器支持的 shim。

但是,如果您真的想支持不同浏览器中的所有不一致,最好的方法(恕我直言)是使用moment.js

var m = moment('2013-12-31T01:23:45-07:00');

甚至使用您的其他格式,带有显式解析字符串:

var m = moment('2013/01/01 00:00:00-0000', 'YYYY/MM/DD HH:mm:ssZZ');
于 2013-05-13T18:59:34.447 回答
0

好吧,我尽我所能找到了这个问题。显然 Firefox 需要时间和时区之间的空格。

new Date('2013/01/01 05:00:00 +0100')
new Date('2013/01/01 05:00:00 -0100')

-没有空格时区不会出错,但时区会出错+

于 2013-05-13T17:53:38.593 回答