2013-01-03 43 views
3

我遇到了GMT時區偏移計算出現的一些意外結果。使用偏移量計算JavaScript日期時間

我使用ExtJS的日期類來幫助計算郵件從GMT 0服務器到用戶的本地客戶機,是目前GMT +8到達的時間。

我想,如果我計算的偏移量,然後補充說,在幾秒鐘的時間戳記,然後我可以使用下面的計算給我一個字符串作爲我請格式化。

var d = new Date((stamp + offset) * 1000); 

郵票是以秒爲單位的日期/時間以及偏移量。

這將返回當前日期和時間在我的位置,但加上8個小時。如果我不添加偏移量,那麼時間是正確的。

是否法新日期()會自動給我在當地時間的日期/時間?

+2

您確定'stamp'是[當地時間]減去[8小時]? – Passerby

+2

你從哪裏得到'郵票'?你是怎麼得到它的? – Cerbrus

回答

4

只需插入包含千分之一秒的unix時間戳。 unix時間戳應該是UTC 0,javascript會查找客戶端計算機的本地時區並計算它。

,你可以背後this鏈接看到,有一些方法UTC至極給您沒有本地時間偏移的時間。也許這可能是你搜索的內容(如果你真的想自己設置時區)。

編輯:

new Date().getTimezoneOffset()會告訴你當地的時區與UTC之間的差別,你應該考慮使用UTC方法。

1

從外觀上來看,stamp是你的,包括時區偏移本地時間。 JavaScript不知道服務器的時區,它(主要)是客戶端語言。

3

只要添加這個以防止其他人看後者。可能是錯誤的,但爲我所需要的工作。

我有用戶的偏移量存儲在幾秒鐘內。

偏移假定以秒爲改變(offset * 1000)以確保抵消被轉換爲毫秒,如果你的在幾秒鐘內不偏移。

function offsetDate(offset){ 
      var d = new Date(new Date().getTime() + (offset * 1000)); 
      var hrs = d.getUTCHours(); 
      var mins = d.getUTCMinutes(); 
      var secs = d.getUTCSeconds(); 
      //simple output 
      document.write(hrs + ":" + mins + ":" + secs);