2010-08-25 67 views
10

我使用日期在一個RSS feed,但我發現不同的結果在IE中使用下面的代碼時,Chrome和Firefox:問題在JavaScript中的日期格式不同的瀏覽器

new Date('2001-01-01T12:00:00Z') 

Firefox是滿意那,但Chrome和IE返回無效日期。

我想我會嘗試更換T和Z值如下:

new Date('2001-01-01 12:00:00') 

這次Chrome是滿意了,但Firefox和IE瀏覽器返回無效的日期。

任何想法我應該怎麼做才能在這種格式的所有瀏覽器中獲取日期對象?

非常感謝, 添

回答

23

此工程在我的盒子所有的瀏覽器 - 嘗試在控制檯:

alert(new Date('2001/01/31 12:00:00')) 

所以

new Date('2001-01-01T12:00:00Z'.replace(/\-/g,'\/').replace(/[T|Z]/g,' ')) 

IE8,FF3.6,Safari4的,鉻

+1

你是對的,這是有效的,這是比我的更好的解決方案。 – NicolasT 2010-08-25 13:24:26

+0

非常感謝!在IE,FF,Chrome和Opera上測試併爲我工作! – TimS 2010-08-31 08:34:33

+0

如何使用時區對FF進行此項工作?因爲這個'new Date('2001-01-01T12:00:00 + 1000'.replace(/ \ -/g,'\ /')。replace(/ [T | Z]/g,''))返回在FF中無效的日期,但在IE/Chrome中工作 – 2016-08-22 12:35:25

1

你可以嘗試:

new Date(2001,0,1,12,0,0) 

這意味着:

new Date(year,month,day,hour,minutes,seconds) 
+3

你的意思是 新的日期(2001,0,1,12,0,0) 因爲JS個月從0開始 – mplungjan 2010-08-25 13:37:19

+0

我會編輯,你說得對 – NicolasT 2010-08-25 13:52:21

+0

小心前導零。 08和09是無效的八進制數字 – mplungjan 2010-08-25 14:05:05

3

您也可以嘗試使用Date.js - 一個開源的JavaScript日期處理庫。

+0

優秀的建議!謝謝 – TimS 2010-08-31 08:35:39

+0

此外,momentjs(www.momentjs.com)消除了瀏覽器的差異。 – Quango 2013-06-17 11:40:12

3

這適用於所有主要的5個瀏覽器,並導致所有瀏覽器識別時間GMT/UTC而不是本地時間(在Z後綴意味着時間是UTC):

new Date('2001-01-01T12:00:00Z'.replace(/\-/g,'\/').replace(/T/,' ').replace(/Z/,' -0')) 

我感謝mplungjan爲他的答案。