我在MySQL數據庫中有一個日期時間類型字段some_field
。我可以使用recordSet.getTimestamp("somefield")
查詢數據,它將返回java.sql.Timestamp
對象。但是,返回的值存儲UTC時間。現在如果知道時區是「美國/芝加哥」,我該如何轉換時間。我必須照顧DST。MySQL,Java和TimeZone
回答
我認爲你可能需要忽略Timestamp
的亞毫秒精度 - 這可能是合理的,就好像你正在轉換到特定的時區,這表明它意味着一個「人」的日期。總之:
TimeZone zone = TimeZone.getTimeZone("America/Chicago");
Calendar calendar = Calendar.getInstance(zone); // Also locale?
calendar.setTime(timestamp);
現在你可以問你想要的任何值日曆 - 日期,星期等
另外的時間,你可能要考慮使用Joda Time,這是一個更好的日期/時間API:
DateTimeZone zone = DateTimeZone.forID("America/Chicago");
DateTime dateTime = new DateTime(timestamp.getTime(), zone);
問題...現在在數據庫中我有一個時間'2012-07-31 16:00:00',時區是'Timezone.getTimeZone(「US/Eastern」)'。但'calendar.get(Calendar.HOUR_OF_DAY)'是17.我認爲這是因爲我的服務器的tz是「US/Central」?我該怎麼辦? – 2012-07-31 21:27:16
@seanhawk:您需要確定返回到Java代碼的確切值。如果你打印'timestamp.getTime()'它顯示了什麼? (明天我將無法提供幫助,但我會看一下。) – 2012-07-31 22:35:21
當時間爲「2012-07-31 20:22:03」,時區爲「美國/太平洋」時,時間戳.getTime()'是1343784123000,即「Wed,01 Aug 2012 01:22:03 GMT」(請參閱www.onlineconversion.com/unix_time.htm)。這意味着'resultSet.getTimestamp()'將結果視爲它處於應用服務器的時區中,在我的情況下是「US/Central」。順便說一句,'resultSEt.getTimestamp(key,cal)'得到完全相同的'Timestamp'。 – 2012-08-01 04:05:04
- 1. Java - Oracle - XML TimeZone
- 2. Java TimeZone和Linux TimeZone夏時制不匹配
- 3. Java TimeZone頭劃傷
- 4. GData TimeZoneProperty to Java TimeZone
- 5. TZ Var到Java TimeZone?
- 6. TimeZone更改Java和數據庫
- 7. java TimeZone getDefault非常慢?
- 8. Java中的TimeZone問題
- 9. NSDate和TimeZone問題
- 10. MYSQL - 在請求中比較NOW()和Paris TimeZone中的日期
- 11. 獲取給定的java的國家TimeZone
- 12. Java JSpinner.DateEditor使用TimeZone March時鐘變化
- 13. Java - Date value long值:TimeZone如何相關?
- 14. Java SimpleDateFormat更改爲不同的TimeZone
- 15. 與TimeZone分析日期(java/android)
- 16. Java - 創建沒有TimeZone的日曆
- 17. 在Java中構建TimeZone對象
- 18. 用java中的timezone解析時間戳?
- 19. 沒有TimeZone概念的Java日期和日曆(不管時區)
- 20. 如何根據用戶更改TimeZone TimeZone
- 21. MySQL,Java和UTF8
- 22. jadira usertype timezone
- 23. PHP:CEST as timezone
- 24. PHP strtotime timezone
- 25. Rails TimeZone錯誤?
- 26. TimeZone中的FindSystemTimeZoneByID
- 27. TimeZone座標
- 28. DateTime TimeZone in php
- 29. Angularjs datetime-picker timezone
- 30. Magento Locale/Timezone Issue
也許我應該使用'getString()'而不是'getTimestamp()'。 Java的datetime API很臭。 – 2012-07-31 21:45:43