2013-07-27 54 views
0

我發現在Mac上,我的腳本的行爲與在窗口上的行爲不同。在這兩個系統上,我使用Chrome瀏覽器作爲瀏覽器,我不知道如何正確解釋我的問題,以免給你看。在Javascript函數下面,它將json時間轉換爲javascript日期。轉換日期窗口和mac之間的差異

function getDateFromJSON(value) { 
    var retvalue = new Date(parseInt(value.replace("/Date(", "").replace(")/", ""), 10)); 
    return retvalue 
} 

當我用在Windows PC上一個JSON日期字符串這個函數如圖所示波紋管的輸出是:星期六1988年10月22日00:00:00 GMT + 0200(西歐夏令時間)

當我使用相同的函數MAC系統的輸出是:週五1988年10月21日23點零零分00秒GMT + 0100(CEST)

我在Mac和窗口中使用的代碼是:

console.log(getDateFromJSON("/Date(593474400000)/")); 

有人可以請幫我解釋我該如何解決這個問題?

+0

括號中的時區的名字來自於操作系統,而且也沒有共同的標準爲了那個原因。爲什麼這是一個問題? – Barmar

+2

另一個區別是兩臺機器有不同的時區設置。他們分開一個時區。 – Barmar

+0

即時通訊開發一個網絡應用程序和一些客戶正在使用MAC,並且日期正在改變,就像在這個例子中:當這個用戶保存時,日期發生了變化,Mac在原來的日子。 (起初沒有人注意到) – Josef32

回答

2

兩個日期都是同

如果要規範,使用(調整時區後)toUTCString

> new Date(" Sat Oct 22 1988 00:00:00 GMT+0200 (W. Europe Daylight Time)").toUTCString() 
'Fri, 21 Oct 1988 22:00:00 GMT' 
> new Date("Fri Oct 21 1988 23:00:00 GMT+0100 (CEST)").toUTCString() 
'Fri, 21 Oct 1988 22:00:00 GMT' 
+0

我希望獲得的時間是歐洲,那麼有沒有辦法將mac time(cest)轉換爲(w。Europe Daylight Time)? – Josef32

+0

@ Josef32如果你想強制西歐日光時間,你可以通過增加一個偏移來調整時間(增加2小時的時間,然後調用utCString並用'(W. Europe Daylight Time)'替換GMT)或者使用像https://github.com/mde/timezone-js – SheetJS

+2

這樣的適當的庫感謝所有的幫助,問題是在Mac上的鉻不識別夏令時。 Nirk使用timezone.js的解決方案奏效了。 – Josef32