2012-01-16 72 views
6

我有一個包含時區偏移量的ISO8601日期(見下文)。當我從中創建一個Date對象時,日期對象被轉換爲我的時區(當前GMT),並且時區偏移量變爲0.有什麼辦法讓Date()構造函數保存時區偏移量?javascript日期 - 保留時區偏移量

var date = new Date("2012-01-17T12:55:00.000+01:00"); 
    console.log(date.toString()); 

我得到的輸出是:

"Tue Jan 17 2012 11:55:00 GMT+0000 (GMT)" 

我想輸出是:

"Tue Jan 17 2012 12:55:00" 
+0

通過複製和粘貼在谷歌瀏覽你的榜樣,我得到的輸出你想' Tue Jan 17 2012 12:55:00 GMT + 0100(巴黎,馬德里)',你使用哪種瀏覽器? – 2012-01-16 17:17:02

+0

@ArnaudF。我強烈懷疑這是因爲您當地的時區爲GMT +1。在Chrome的德克薩斯州沃思堡,我得到:'Tue Jan 17 2012 05:55:00 GMT-0600(Central Standard Time)'。 – DMKing 2012-01-16 17:44:38

回答

8

不能與內置Date object,因爲他們只知道本地(由用戶的瀏覽器和/或操作系統設置定義)和UTC。您可以從課程中的許多克隆方法中看到這一點(例如,getHours/getUTCHours)。

getTimezoneOffset是唯一的時區信息,你真的有,但它是當地以及,將可能只給你一次+0(或+6在我的情況):

var date = new Date("2012-01-17T12:55:00.000+01:00"); 
console.log(date.getTimezoneOffset()/60.0); 

你可以試試timezone-js(或one of its forks),但你需要知道Olson timezone name不僅僅是GMT/UTC偏移:

var date = new new timezoneJS.Date('2012-01-17T12:55:00.000+01:00', 'Europe/Brussels'); 
alert(date.getTimezoneOffset()/60.0); // +1