如何將最初實例化爲CST的java.sql.Timestamp對象的時區更改爲GMT?java.sql.Timestamp:更改Timestamp的時區
4
A
回答
11
java.sql.Timestamp
物體沒有有時區 - 它們是時間的瞬間,如java.util.Date
。
如果您認爲他們在特定的時區,您可能會因誤導性輸出而感到困惑(例如,使用默認時區自動將該時刻轉換爲本地時間)或者您可能有以不恰當的方式創建數據。你需要的答案將取決於你的情況的細節。
例如,如果你只是想顯示在特定時區中的Timestamp
值,則可以使用SimpleDateFormat
,適當地設置時區,只是格式化Timestamp
(因爲它延伸Date
)。我不相信這會讓你顯示與內部時間戳存儲一樣精確的數據,但可能不會對你造成問題。
如果您的數據已被錯誤地創建爲那麼可能有也可能沒有辦法「更正」它 - 例如,由於夏令時更改可能存在一些不明確之處。然而,我們越瞭解它越好,我們就能幫助你。
1
某些Timestamp構造函數的確依賴於默認的時區。爲了避免這種 一種方法是使用需要很長的構造:
TimeZone.setDefault(TimeZone.getTimeZone("GMT"))
Timestamp.valueOf("2016-10-26 23:00:00").getTime()
res16: Long = 1477522800000 // This is what we want
TimeZone.setDefault(TimeZone.getTimeZone("GMT-1"))
Timestamp.valueOf("2016-10-26 23:00:00").getTime()
res14: Long = 1477526400000
new Timestamp(OffsetDateTime.of(2016,10,26,23,0,0,0,ZoneOffset.UTC).toInstant.toEpochMilli).getTime
res15: Long = 1477522800000 // We get the same result at in GMT
相關問題
- 1. 更新java.sql.Timestamp
- 2. java.sql.Timestamp(long)使用哪個時區?
- 3. 如何知道timeStamp何時更改?
- 4. 更改時區
- 5. 更改時區
- 6. 更改列類型爲timestamp
- 7. OpenJDK java.sql.Timestamp與Sun Java VM的timestamp類不同嗎?
- 8. 更改時區phpmyadmin?
- 9. MySQL時區更改?
- 10. simpledateformat更改時區
- 11. 更改mysql的時區
- 12. 更改datetimepicker的時區
- 13. 更改時區在JavaScript
- 14. SQL Server時區更改
- 15. MySql:不可更改時區
- 16. Momentjs更改時區值
- 17. 在drupal中更改時區
- 18. 在MSYS中更改時區
- 19. 更改jenkins時區主/從?
- 20. ubuntu postfix時區更改
- 21. Mysql更改主機時區
- 22. grails/mysql時區更改
- 23. 使用php更改時區
- 24. 在PHP中更改時區
- 25. 用夏令時分配java.sql.Timestamp
- 26. 更新約會時區更改爲UTC
- 27. 更改Joda DateTime時區但不更改時間
- 28. django - 時間戳隨機更改時區
- 29. Android AlarmManager和DST /時區/時間更改?
- 30. Android更改時區,時間和日期
謝謝,喬恩的答案,但有使用getTimezoneOffset(),在時間戳的方法已過時,它返回從格林尼治標準時間以分鐘爲單位的偏移量,在我的情況下,它返回到360分鐘。期望的結果是將其更改爲0,這將是GMT時間戳的情況。 – abson 2011-12-21 11:36:49
@abson:'getTimezoneOffset'繼承自'Date' - 它總是*相對於系統默認時區。它根本不屬於對象的一部分,不應該使用。 – 2011-12-21 11:42:40
時區偏移量肯定會影響結果。我在數據庫中有兩個時間戳。一個在DST之前,一個在DST之後。如果我使用Timestamp的getTime()作爲其構造函數參數創建Calendar對象,那麼對於之前的DST時間戳而不是DST之後的時間戳可以。儘管使用Calendar.getInstance(TimeZone.getTimeZone(「UTC」))來實例化Calendar對象,但它錯誤地將其「糾正」了一個小時 – 2013-04-04 10:43:15