1

some_field在 MySQL 数据库中有一个日期时间类型字段。我可以使用 查询数据recordSet.getTimestamp("somefield"),它返回一个java.sql.Timestamp对象。但是,返回的值存储 UTC 时间。现在如果知道时区是“美国/芝加哥”,我该如何转换时间。我必须照顾 DST。

4

1 回答 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 回答