2016-07-26 80 views
4

我在(UTS-05:00)東部時間(美國&加拿大)日期字符串,將忽略區偏移

即,new Date().getTimezoneOffset() == 300秒。

現在,我有一個API端點(JSON),它返回一個像這樣的日期字符串。

{ 
    someDate: '2016-01-01T00:40:00.000+00:00' 
} 

在這裏,我將它傳遞給Date構造這樣

var dateString = "2016-01-01T00:40:00.000+00:00"; 
 
var someDay = new Date(dateString); 
 
console.log(someDay)

Mozilla Firefox瀏覽器控制檯顯示

日{星期五2016年1月1日00:40: 00 GMT-0500(東部夏令時)}

谷歌瀏覽器控制檯顯示

星期四2015年12月31日19:40:00 GMT-0500(美國東部標準時間)

Chrome正在採取timezoneoffset的考慮和Firefox是沒有的。我能做些什麼來獲得不考慮偏移量的日期,例如Chrome中的FireFox?

+1

你在痛苦的世界試圖解決這個問題只是使用Javascript的'日期'。強烈推薦瞬間和時刻 - 如果你正在做的事情超出了基礎(聽起來就像你)。 – ach

+0

@ach:我知道:(我試圖避免進一步的依賴關係,雖然 – naveen

+0

我在兩個瀏覽器中都得到了相同的結果,結果如何? –

回答

3

你可以做到這一點:

var dates = '2016-01-01T00:40:00.000+00:00'.split(/-|T|:/); 
var newDate = new Date(dates[0], dates[1]-1, dates[2], dates[3], dates[4]); 
+0

我希望它是這樣簡單:) http://imgur.com/KKPCVGd嘗試設置您的系統到另一個時區並嘗試 – naveen

+0

我編輯了答案。嘗試新的變體,請 –

+0

也嘗試過。不會在鍍鉻工作 – naveen

0

這個技巧的作品(不是很乾淨,但做這項工作)

var dateString = '2016-07-27T01:40:30'; 
var dateParts = dateString.split(/-|T|:/); 
var saneDate = new Date(
    +dateParts[0], 
    dateParts[1] - 1, 
    +dateParts[2], 
    +dateParts[3], 
    +dateParts[4], 
    +dateParts[5]); 
console.log(saneDate); 
相關問題