2013-05-13 115 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');