【发布时间】:2017-12-31 06:12:53
【问题描述】:
我有一个时间值以HH:mm:ss 格式存储在我的数据库中(使用MySQL 的time 类型)。该时间将被视为 IST 时区的值。运行我的 Java 代码的服务器遵循 UTC 时区。
如何在 IST(或 UTC 毫秒)中的 yyyy-MM-dd HH:mm:ss 中获取格式化的日期时间?以下是我到目前为止尝试过的:
// ... Code truncated for brevity
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalTime time = resultSet.getTime("send_time").toLocalTime();
LocalDateTime datetime = time.atDate(LocalDate.now());
System.out.println(datetime.format(formatter));
上面正确打印了我的本地机器上的日期时间,它在 IST 上,但我担心它在远程服务器上的行为。
【问题讨论】:
-
如果可以,请首选
LocalTime time = resultSet.getObject("send_time", LocalTime.class);。它需要一个更新的 JDBC 驱动程序(JDBC 版本 4.2),但我相信 MySQL 很早就有这样的 Connector/J,所以你可能会很幸运拥有这个。 -
@OleV.V. - 谢谢你的评论。我正在使用 MyBatis 来获取它,并且我已经为它编写了一个自定义类型处理程序。仅针对这个问题,我已经证明我正在使用 ResultSet 得到它。
标签: java mysql datetime time timezone