Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否将Hibernate中的日期存储为UTC时间日期?_Java_Mysql_Hibernate_Date_Datetime - Fatal编程技术网

Java 是否将Hibernate中的日期存储为UTC时间日期?

Java 是否将Hibernate中的日期存储为UTC时间日期?,java,mysql,hibernate,date,datetime,Java,Mysql,Hibernate,Date,Datetime,我面临一个有趣的问题。在我当地的环境中,我使用PDT时间。当我从前端存储UTC日期时,在通过Hibernate将日期存储到MySQL数据库之前,我会在存储日期之前检查Java中的日期,并且该日期实际上会转换为我系统的时区。我真的很好奇为什么我在前端的日期格式是UTC日期,所以我将我的系统时区从PDT更改为EDT,下次我尝试存储该日期时,Hibernate中的日期最终是EDT时间。是否有任何方法可以更改它,以便在所有环境中,如果日期不在UTC时区,则将其存储为UTC时间 后端侧: MySQL具有s

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

后端侧:

MySQL具有
setTimestamp/getTimestamp
代码,但只有在设置连接参数
useLegacyDatetimeCode=false
时,才会启用该代码,如需进一步了解,请参考

例如,如果您的数据库设置为使用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>

javax.faces.DATETIMECONVERTER\默认\时区\是\系统\时区
真的

并为MySQL设置UTC Timzone,您可以参考此链接,Hibernate 5.2简化了此任务,如中所述

基本上,现在可以使用以下配置属性为所有
时间戳
时间
列强制设置UTC时区:

<property name="hibernate.jdbc.time_zone" value="UTC"/>


您在mysql中配置过与时区相关的内容吗?@dambros没有。你认为我最好的方法是什么?我的数据库中有一列可用于潜在存储时区。请尝试回答。是否有任何方法可以实际更改它,使其将时区更改为UTC时区而不是系统时区?请以UTC设置系统时区,将以上代码放在web.xml中,这样它将始终向前端显示系统时区。实际上,我希望后端始终存储UTC时间。前端对我来说并不重要。我也不想更改我的系统时区。是否要使用java在mysql中设置UTC时区?如果可能,请在我的.mysql数据库中设置