我在 MySQL 数据库中有一个日期时间类型的字段 some_field
。我可以使用 recordSet.getTimestamp("somefield")
查询数据,它返回一个 java.sql.Timestamp
对象。但是,返回值存储 UTC 时间。现在如果知道时区是“美国/芝加哥”,我该如何转换时间。我必须处理 DST。
最佳答案
我认为您可能需要忽略 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);
关于java - MySQL、Java 和时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11748658/