我some_field
在 MySQL 数据库中有一个日期时间类型字段。我可以使用 查询数据recordSet.getTimestamp("somefield")
,它返回一个java.sql.Timestamp
对象。但是,返回的值存储 UTC 时间。现在如果知道时区是“美国/芝加哥”,我该如何转换时间。我必须照顾 DST。
问问题
463 次
1 回答
1
我认为您可能需要忽略 - 的亚毫秒精度,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-31T20:44:44.793 回答