Firefox返回时区偏移无效?

时间:2013-05-13 17:11:20

标签: javascript firefox datetime timezone

我遇到过似乎是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)

2 个答案:

答案 0 :(得分:0)

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

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

如果没有空格,-时区就不会出错,但+时区会出错。

答案 1 :(得分:0)

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

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

解析ISO日期将适用于所有较新的浏览器,但在某些较旧的浏览器上失败,最明显的是IE8。有一个关于此here的浏览器支持的优秀描述,以及旧浏览器支持的垫片。

但是如果你真的想支持不同浏览器中的所有不一致,最好的方式(恕我直言)是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');