gpt4 book ai didi

java - 将数据库时间转换为 IST 日期时间

转载 作者:行者123 更新时间:2023-11-29 01:35:57 37 4
gpt4 key购买 nike

我有一个时间值以 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 上,但我担心它在远程服务器上的表现如何。

最佳答案

您的方法很好,并且无论您计算机的时区如何,都应该有效,因为 LocalTimeLocalDateTime 中没有时区信息。一个可能的问题是 LocalDate.now() 返回计算机本地时区的今天日期,而不是 IST。您可能希望将其替换为 LocalDate.now(ZoneId.of("Asia/Calcutta"))

或如@OleV.V 所评论。您可以使用新的驱动工具直接派生 LocalTime:

LocalTime time = resultSet.getObject("send_time", LocalTime.class);

注意您的方法可能需要注意的事项:

  • 如果您使用的时区引入夏令时,您最终可能会在数据库中得到两个实际上不同时刻的相同时间 - 使用 UTC 来存储时间可能更可靠
  • mysql中的
  • time可以存储小于00:00和大于23:59:59.999999的值,在这种情况下你可能会遇到Java 端的意外行为。

关于java - 将数据库时间转换为 IST 日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45301248/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com