我在MySQL数据库中有一个日期时间类型字段some_field
。我可以使用recordSet.getTimestamp("somefield")
查询数据,它返回一个java.sql.Timestamp
对象。但是,返回的值存储UTC时间。现在,如果知道时区是"美国/芝加哥",我该如何转换时间。我得照顾夏令时。
我认为您可能需要忽略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);