用户从JSP页面输入日期,并转换为Joda DateTime
,字符串输出为
2014-03-26T00:00:00.000 + 09:00
但是,当我将包含日期的实体保存在数据库中并再次检索并打印出来时,它就变为
2014-03-25T09:00:00.000 + 09:00
我不知道为什么数据库会将此更改减少一天。 我使用postgres,hibernate JPA进行应用程序开发。 提前谢谢。
答案 0 :(得分:1)
数据库中的值是多少?使用pgAdmin应用程序,psql命令行工具或其他一些数据库管理工具直接查询Postgres。
您在Postgres中使用的数据类型是什么?您可能应该使用TIMESTAMP WITH TIME ZONE。避免使用WITHOUT时区类型,因为忽略您可能提供的任何时区偏移信息。
尽管有名称,但两种类型都不存储任何时区信息。区别在于您是否希望Postgres关注传入数据的时区信息。请务必仔细阅读the doc并进行实验,直至了解日期时间的工作原理。
阅读Postgres专家David E. Wheeler的Always Use TIMESTAMP WITH TIME ZONE。