我在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