gpt4 book ai didi

java - 将 Hibernate 中的日期存储为 UTC 时间日期?

转载 作者:行者123 更新时间:2023-11-29 03:25:39 24 4
gpt4 key购买 nike

我面临一个有趣的问题。在我的本地环境中,我处于 ​​PDT 时间。当我从我的前端存储一个 UTC 日期时,就在我通过 Hibernate 将日期存储到我的 MySQL 数据库之前,我在存储日期之前检查了 Java 中的日期,并且该日期实际上被转换为我系统的时区。我真的很好奇为什么即使我在前端的日期被格式化为 UTC 日期,所以我将我的系统时区从 PDT 更改为 EDT 并且 Hibernate 中的日期最终在我下次尝试存储时处于 EDT 时间那个日期。有什么办法可以更改它,以便在所有环境中,如果日期不在 UTC 时区中,则将其存储为 UTC 时间?

最佳答案

后端:

MySQL有setTimestamp/getTimestamp代码,但只有设置连接参数useLegacyDatetimeCode=false才会启用,进一步学习可以引用this document

例如,如果您的数据库设置为使用 UTC,Java 中可能有多个可能的 UTC 时区,因此您可以通过准确地告诉 mysql-connector 数据库时区是什么来澄清这一点:

String url =
"jdbc:mysql://localhost/databasename?useLegacyDatetimeCode=false&serverTimezone=UTC+05:30";

客户端:

将下面的代码放在 web.xml 文件中,它将采用您的系统时区并在网页上以 UTC 显示时间。

<context-param>
<param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
<param-value>true</param-value>
</context-param>

并为 MySQL 设置 UTC Timzone 您可以引用此链接 Should MySQL have its timezone set to UTC?

关于java - 将 Hibernate 中的日期存储为 UTC 时间日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36641664/

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