2013-05-20 41 views
1

例如,我有這樣的:從getTimezoneOffset()中扣除後的時間戳記引用是什麼?

d = new Date(2013,04,20,14,56,10) 
Mon May 20 2013 14:56:10 GMT+0800 (SGT) 
dt = d.getTime() /1000 
1369032970 

現在,timezoneoffset的值是

d.getTimezoneOffset()*60 
-28800 

所以,如果我減少了,我得到

dt -= d.getTimezoneOffset()*60 
1369061770 

我的問題是,是1369032970我的地方時間戳和1369061770 UTC時間戳?

我可以放心地說,由timezoneOffset減少的任何當前時間戳都是UTC時間戳嗎?

回答

0

getTime的結果是自1970年1月1日以來的毫秒數。當地時區不起作用。所以如果你的問題是如何獲得UTC時間戳,只需使用getTime的結果而不做任何修改。

「本地時間戳」的想法不是很有用。可以在將UTC時間戳應用到人類可讀的日期字符串之前應用偏移量 - 但是在JavaScript中,這已經在幕後完成了。你真的不想把數字時間戳傳遞給其他人,除非它是嚴格的UTC,因爲什麼是「本地」的含義將會丟失。

此外,當您撥打getTimezoneOffset時,您將獲得以日期-分鐘表示的時刻的特定偏移量。此外,該符號與我們通常看到的時區偏移相反。例如,我住在亞利桑那州,全年的抵消時間是UTC-07:00。但致電getTimezoneOffset返回正值420。如果您應用它的時間戳,你會做以下幾點:

dt -= dt.getTimezoneOffset() * 60 * 1000; 

你幾乎擁有了,卻忘了從秒轉換爲毫秒。但就像我說的,這個價值沒有意義。如果你從它創建了一個新的對象Date,它將顯示兩次偏移 - 一次是你自己的代碼,另一次是Javascript內部。