所以我们使用Hibernate进行对象关系映射,我们有一个Student.java(POJO)和一个registrationDate(java.util.date
)。我们使用此日期“2012-01-05 10:00:00
”保存学生对象,当我们查看数据库时,我们保存它时看起来正确。
问题是当我们从db(student.getRegistrationDate
)取回它而不是在GMT中返回正确的毫秒时它会根据我们的时区(我们的时区-3,错误的时间返回一个修改的毫秒)日期为“2012-01-05 13:00:00
”)。现在这不是java.util.date的正常行为,因为它不保存时区信息,所以我担心实际上Hibernate是否正在调整date对象中的毫秒以匹配服务器本地时间,或者它可能是别的什么?
注意:我使用date.getTime
而不是date.ToString
来获取日期。
答案 0 :(得分:0)
如果您想将它用作时间戳,请使用java.sql.Timestamp而不是java.util.Date(假定Zulu时间),这将正确处理时区。
或者您可以尝试joda Time但是使用Hibernate和JodaTime,您可能需要一些工作,请参阅this
答案 1 :(得分:0)
转换发生在时区应用程序运行中。正如您已经了解的那样。检查一下 - http://community.jboss.org/wiki/UserTypeForNon-defaultTimeZone。