Firefox返回无效的时区偏移



我遇到了一个看起来很奇怪的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 }

我希望得到:

日期{Mon Dec 31 2012 23:00:00 GMT-0500 (EST)}

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

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

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

好吧,我通过投掷我能找到的问题。显然,Firefox需要在时间和时区之间留出一个空格。

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

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

您可能希望使用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');

相关内容

  • 没有找到相关文章