2010-11-26 145 views
1

我有這種JavaScript困境。我需要將客戶當地時區的日期列表轉換爲紐約時區(EST)時區。我正在使用下面的功能:夏令時和JavaScript時區轉換

Date.prototype.toNycTime = function() { 

    var localTime = this.getTime(); 
    var localOffset = this.getTimezoneOffset() * 60000; 
    var utc = localTime + localOffset; 
    this.setTime(utc - 3600000 * 5); 

    return this; 
}; 

它的工作正常。一個問題是,每當美國有夏令時開關時,我需要調整UTC偏移量。這對於任何下一個開關之前的日期都適用(最早的日期是2011年3月13日)。但它在切換後的日期不起作用。我不知道任何將爲我做轉換的瀏覽器中的任何內置JS函數。

有沒有一個好的圖書館,可以讓我做一些普遍的轉換?或者任何人都可以提供關於上述代碼的任何提示?我試圖避免在轉換的日期/時間進行編程,並且一直在查找。

回答

-3

http://www.datejs.com/

Datejs是一個開源的JavaScript庫的日期。

綜合,但簡單,隱身和快速。 Datejs已通過所有審判並準備罷工。 Datejs不僅解析字符串,而且將它們切成兩半。

+3

它無法處理夏令時。 – 2011-03-04 14:07:36

0

我正在處理這個確切的問題......全世界的企業用戶,但'企業時間'是包括夏令時在內的PST/PDT。

如何我已經接近它: 我其實解析爲一個PacificTime POSIX時區字符串開始

PST8PDT,M3.2.0/2,M11.1.0/2 

,並重新進入那些可解析日期字符串時,時鐘更多的前進和後退。 使用嵌入在TZ字符串中的小時偏移量,我將前向和後向時間轉換爲紀元時間戳,並使用if-then來計算公司時間目前是否爲DST。

這產生了UTC的偏移量我可以用來將本地'epoch'時間(已經在UTC)轉換爲概念性本地時間(實際上在UTC時間轉換,但看起來是本地的)。

我必須這樣做,因爲'flot'可以完成UTC中的所有內容