java - MySQL、Java 和时区

标签 java mysql sql timezone

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

相关文章:

java - Android - 如何只允许一定数量的小数位

java.lang.UnsupportedOperationException : Robolectric does not support API level 1

java - DB 查询很快,但 JPARepository 获取很慢

php - HTML 表单未将值传递给 PHP (mysqli_real_escape_string)

java - 在 Jar 中读取和写入文件

php - 将 MySQL 列转换为自定义数组字符串

mysql - 创建 SQL 查询

mysql - 如何使用 LEFT JOIN 进行计数?

mysql - 按最近日期排序,然后是过去

c# - LinQ to SQL 忽略 != 虚拟属性上的 null