带有时区偏移量的joda datetime,插入到DB后将更改为UTC时间

时间:2017-01-17 06:38:18

标签: java datetime timezone jodatime

我现在正在使用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),所以我需要更改数据库设置或在代码级别执行此操作?对这个时区处理真的没什么经验,有人可以帮帮我吗?谢谢!

1 个答案:

答案 0 :(得分:0)

经过几个小时的调查,我终于找到了解决这个问题的方法,因为我正在使用Hibernate,我需要做的就是在hibernate config 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>

现在一切正常。