gpt4 book ai didi

java - 关于时区和格式化日期的 Grails 问题

转载 作者:搜寻专家 更新时间:2023-11-01 03:43:26 24 4
gpt4 key购买 nike

希望有人可以帮助解决这个非常烦人的情况,因为我对 Grails & Dates & Timezones 的理解还不够完整。

描述一下情况,首先我在英国,应用程序所在的服务器在美国(CST)

用户登录到我的应用程序,我有一个字段保存他们的时区,唯一目的是格式化日期可靠地适合他们的位置。

当应用程序启动时,我强制使用默认的 UTC 时区,并且我还在应用程序的其他地方使用了一些 Joda 日期,因此我也将 Joda DateTimeZone 设置为 UTC。但我只将 Joda 用于固定日期,这些日期在显示时不应更改。

所以在 Bootstrap 中我有 TimeZone.setDefault(TimeZone.getTimeZone("UTC"))

现在问题来了,对于某些我想在用户交互时记录的表,所以有一个名为“lastModified”的日期字段,当记录更新时,我只是将它设置为一个新的 Date()

我使用 ajax 调用来呈现数据,而不是直接在 GSP 中显示字段,它在 Controller 中进行了预处理,为了格式化,我使用

创建了一个格式化程序
DateTimeZone dtz = DateTimeZone.forID(user.timeZone)
def DateTimeFormatter tzAwareLongFormatter = DateTimeFormat.forPattern('MM/dd/yyyy HH:mm').withZone(dtz);

我认为这将是完美的,日期将保持 UTC,然后作为 Europe/London tz 的用户,我会看到日期格式正确。

但是我得到的时间是 +7 小时

因此,即使我在 Bootstrap.groovy 中设置了默认时间,它的行为就像是根据服务器位置存储日期时间一样。

有什么我应该设置而不必诉诸于更改服务器时间本身吗?

最佳答案

看来在bootstrap中设置默认的TZ还不行,还得加上

-Duser.timezone=UTC 

到 JAVA_OPTS,到目前为止日期显示正确。

关于java - 关于时区和格式化日期的 Grails 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8899434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com