2013-10-30 143 views
6

當我嘗試使用JavaScript中的Date()獲取當前日期時,我遇到了奇怪的行爲。 首先,我通過JS日期()返回正確的時區,但錯誤的日期

sudo ln -sf /usr/share/zoneinfo/Cuba /etc/localtime 

設置時區以古巴和另一個控制檯運行node.js中跑Date()這是輸出 -

> Date() 
'Thu Oct 31 2013 06:28:25 GMT+1100 (CDT)' 

上的更改時區,

sudo ln -sf /usr/share/zoneinfo/Asia/Vladivostok /etc/localtime 

並再次運行Date(),這是輸出 -

> Date() 
'Thu Oct 31 2013 06:28:31 GMT+1100 (VLAT)' 

任何人都可以請解釋爲什麼會發生這種情況和我怎樣才能得到基於時區的時間?

+0

當你在做這個改變後在shell中運行'date'時會說什麼? (我的意思是/ usr/bin/date,而不是node.js外殼) – glomad

+0

檢查此鏈接,在這裏它幫助[SO-問題](http://stackoverflow.com/questions/18450851/node-js-timezone-independant-日期 - 現在) –

+0

@ithcy,以下是它說的 - '[parin @ arch〜] $ date Thu Oct 31 06:39:59 VLAT 2013 [parin @ arch〜] $ date Wed Oct 30 15:40 :06 CDT 2013' –

回答

2

一些與操作系統時區亂搞和node表明,雖然node在運行時正確地拿起時區變化,它無法更新偏移。這就是爲什麼這兩個日期顯示GMT+1100

如果您重新啓動節點,您會發現偏移量和時區都是正確的。我懷疑這是爲了避免在運行過程中意外更改時間,但無法通過Google搜索找到任何相關內容。

+0

是在重新啓動節點上,它顯示正確的日期。但是,我想在JS腳本中顯示時區更改的日期更改。我只是使用'node' shell來檢查這個。 有沒有辦法從時區計算偏移量? –

+0

@ParinPorecha你期待在腳本運行期間更改時區? –

+1

是的。我想我應該更好地解釋它 - 腳本是一個gnome-shell擴展,它顯示一個時鐘。因此,如果用戶更改時間/時區,我希望時鐘立即更新,而無需重新啓動gnome-shell或計算機。 –

相關問題