2013-05-13 117 views
1

我遇到了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 } 

我希望,而获得:

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

看样子+是什么原因造成的问题,如果我不能使用GMT以东的时区,这似乎是一个相当大的问题。

编辑:添加在Firefox中http://jsfiddle.net/utm4f/

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

+0

究竟是否使用的是Firefox的版本?你是否已经确认它可以用于负偏移(只显示“0”)? – Bergi 2013-05-13 17:33:38

+0

FF 20.0。是的,我尝试过使用FF控制台。 -0200,-0300等......都可以工作,只要您尝试+0100就会失败。 – 2013-05-13 17:35:30

回答

0

好吧,我发现这个问题抛出任何我可以在它。 Firefox显然需要时间和时区之间的空间。

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

-时区不会错误没有空格,但+的会。

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');