我现在正在使用 jodatime,但我最近遇到了一个问题,那就是:当我得到一个 joda 时间(它总是带有时区偏移量)时,比如说2017-01-31T00:00:00.000+08:00
,在我将此值插入数据库后(我使用 Hibernate4 作为我的 ORM 框架),该值将自动转换为 UTC 时间,这是1/30/2017 4:00:00 PM
(我使用的是 IBM DB2, 尝试了MySql也一样)。当我从数据库中检索它时,它会转换回2017-01-31T00:00:00.000+08:00
.
只是想知道为什么会这样?我可以对此进行一些全局配置吗?我想在数据库中存储本地时间而不是 UTC 时间(类似于 1/31/2017 0:00:00 AM
),所以我需要更改数据库设置或在代码级别执行此操作?在这个时区处理方面真的没有太多经验,谁能帮我?谢谢!
经过几个小时的调查,我终于找到了这个问题的解决方案,因为我使用的是 Hibernate,我需要做的只是将以下行添加到休眠配置 xml:
<property name="jadira.usertype.databaseZone">Asia/Singapore</property>
<property name="jadira.usertype.javaZone">Asia/Singapore</property>
或者:
<property name="jadira.usertype.databaseZone">jvm</property>
<property name="jadira.usertype.javaZone">jvm</property>
现在一切正常。