2012-02-11 263 views
0

我正在使用long構造java.sql.Timestamp。有時候它會在其他時候出現錯誤!例如將時間戳長轉換爲時間戳錯誤

76875給出的時間戳 「1970-01-01 01:01:16.875」

凡來了額外的時間的呢?問題出現,然後消失的自行捐贈:

「1970-01-01 00:01:16.875」。

的代碼導致在谷歌AppEngine上運行的問題位,可以把它搞亂的東西了時區?我試圖找出一個模式,但尚未管理。

回答

0

數據庫是否與您的應用程序在同一臺服務器上運行?時區差異似乎最有可能。

這裏有幾個變量。嘗試確定問題出在哪裏是來自:

  1. 構造一個Date對象與長時間戳值 - 是你期待什麼?
  2. 確定App引擎服務器位於哪個時區。可能是新的TimeZone()。getDisplayName()
  3. 嘗試使用java.sql.Date - 它的行爲方式是否相同?

您可能需要爲這些不同的日期對象創建一個表。嘗試不同的長整型值,併爲每個值創建一行java.util.Date,java.sql.Date,java.sql.Timestamp。

0

刷新內存Timestamp構造函數:自1970年1月1日00:00:00 GMT以來的時間 - 毫秒。請注意,這是GMT

所以沒有錯 「1970-01-01 01:01:16.875」,我想你在歐洲時區(+1)現在:)

嘗試new java.sql.Timestamp(76875).toGMTString()的時候,你將獲得「1月1日1970 00:01:16 GMT「。

您也可以先致電TimeZone.setDefault(TimeZone.getTimeZone("GMT+0:00"));,然後您的時間戳將爲「1970-01-01 00:01:16.875」。