在我的Play应用程序中,我的模型的created
字段为Instant
。它使用@PrePersist
挂钩填充,只需将其设置为new Instant()
。默认时区被正确检测为US/Chicago
,当持久保存到mysql时,它出现在同一时区(datetime
字段中)。
但是,当从数据库中读回对象并显示时间时,它以UTC而不是本地时间显示。我目前正在使用
显示它${org.joda.time.format.DateTimeFormat.forStyle("SS").printTo(out, object.created)}
作为Joda的新手和JPA相当新,我不确定这是一个joda问题,JPA问题,如果我应该使用不同的Joda类型,不同的mysql类型,或者如果我要去关于这完全错了。有人能指出我正确的方向吗?
答案 0 :(得分:0)
根据API UTC似乎是参考时区。您始终可以使用withZone(DateTimeZone)
方法在DateTimeFormat上更改它。以下代码输出美国/芝加哥的日期,似乎是joda-zime中的right timezone:
${org.joda.time.format.DateTimeFormat.forStyle("SS").withZone(org.joda.time.DateTimeZone.forID("America/Chicago")).printTo(out, object.created)}
在user guide之后,您还可以使用DateTimeZone.setDefault(DateTimeZone.forID("America/Chicago"));
为joda设置默认时区,但我一直认为使用VM参数指定默认时区也适用,应该是更好的选择。