2012-05-25 60 views
0

我有一個客戶端 - 服務器基於Java application.The客戶端在美國/太平洋時區運行,並在UTC(我保存在UTC數據庫的時間)服務器Java的Date對象:夏令

所以例如,如果我將日期保存爲09:00 Hrs太平洋時間,則將其保存在DB中,時間爲14:00 UTC。

當我從DB閱讀這段時間後,夏令時會被應用,現在它會轉換爲08:00的太平洋時間,而不是09:00。

因此,當從太平洋時間轉換爲UTC時,不考慮夏令時,但在從UTC轉換回太平洋時,應用的是不一致的。

在數據庫中,列類型是TIME,在java中,我正在將它讀入日期對象。

我該如何處理?

+0

但這聽起來像是正確的事情了?那一刻,它真的是8而不是9? –

+0

如何在一個實例中將時間保存爲9,並且在下一個實例中將時間轉換爲8 – Dunxton

+0

它是否通過相同的jdbc連接?因爲時間實際上是由JDBC轉換的。 –

回答

0

通常,數據庫服務器決定時間,是否應用夏時制,以及UTC是標準時區。

建議:

  1. 也許你想通過客戶端作爲一個字符串場與時區PST,EST,或任何其他字段設置時間。
  2. 僅爲時區創建一個字段,並計算顯示給客戶端的時間。
0

我認爲你可以做的最好的事情就是確保儘可能多的時間處理完全不受時區限制。例如,Unix時代以來的毫秒。然後,僅在向用戶顯示時才應用時區數據。

因此,在這種情況下,當您向服務器報告以及從服務器檢索時,請不要應用任何本地時間假設。通過這種方式,不可能對數據進行不匹配的時區或DST處理。

0

除了這一切,我建議你手動使用getLong並自己構建Date對象。