带有时区偏移量的 joda 日期时间,插入数据库后将更改为 UTC 时间



我现在正在使用 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>

现在一切正常。

相关内容

  • 没有找到相关文章

最新更新