2012-01-30 22 views
9

我想從字符串中創建一個日期對象。 我得到ISO格式日期除了毫秒部分如 「2012-01-30T16:23:12」Firefox新日期()從字符串構造時間在本地時區

結果當我運行以下在IE,鉻和Firefox (Link to Fiddle

currentDate = "2012-01-30T16:23:12"; 
var date = new Date(currentDate); 
alert(date); 

代碼不同IE和Chrome認爲該字符串爲UTC,但Firefox在本地時區考慮。

是否有任何通用的方法來解決它,除了檢查用戶代理到處?

+0

[煩人的javascript時區調整問題](http://stackoverflow.com/questions/7629286/annoying-javascript-timezone-adjustment-issue) – 2012-01-30 11:18:07

回答

12

你可以嘗試追加零時區偏移UTC +00:00

currentDate = "2012-01-30T16:23:12+00:00"; 

這是否幫助? (對不起,我不能在沒有實際更改我的時區的情況下對其進行測試。)

+0

謝謝。它適用於「+00:00」。這樣所有三個瀏覽器產生相同的時代價值。 http://jsfiddle.net/harsha/9ybtN/2/ – harsha 2012-01-30 12:06:08

+0

對不起,是的,它需要冒號 – 2012-01-30 12:09:23

2

嗯,可能的解決方法是解析字符串和使用方法。

setUTCDate()  
setUTCFullYear() 
setUTCHours() 

也許,有更好的解決辦法

+2

+1,這不是一個解決方法,但*正確的方法*,請參閱:http://stackoverflow.com/questions/7629286 – 2012-01-30 11:18:45

0

如果使用目前的格式,則不能保證輸入將被正確解析。 Date.parse()例程只需要以特定格式解析字符串,解析其他格式是依賴於實現的。如果你敢依靠實現滿足需求,將數據添加到符合特定的格式:

new Date(currentDate + '.000Z') 

或者,使用可以在當前格式解析數據的庫,例如jQuery或Globalize.js。

類似的考慮因素適用於編寫日期。如果您使用Date.toString()(無論是明確的還是如alert(date)),則不保證輸出格式。即使在一臺計算機中,不同的瀏覽器也會使用不同的本地化格式。

相關問題