java – Grails问题的时区和格式化日期
希望有人可以帮助解决这个非常烦人的情况,我发现自己与Grails&日期和时间时区作为我的理解并不完全.
为了描述这种情况,首先我在英国,该应用程序所在的服务器位于美国(CST) 用户登录我的应用程序,我有一个字段,其中包含他们的时区,其唯一目的是格式化可靠地适合其位置的日期. 当应用程序启动时,我强制执行UTC的默认时区,并且我还在应用程序的其他地方使用了一些Joda日期,因此我将Joda DateTimeZone也设置为UTC.但是我只把Joda用于固定日期,这些日期在呈现时不应该改变. 所以在Bootstrap中我有TimeZone.setDefault(TimeZone.getTimeZone(“UTC”)) 现在问题是,对于某些我希望在用户交互时记录的表,因此有一个名为“lastModified”的日期字段,并且当记录更新时,我只需将其设置为新的Date() 我正在使用ajax调用来呈现数据,而不是直接在GSP中显示它在控制器中预处理的字段,并且为了格式化,我创建了一个格式化程序 DateTimeZone dtz = DateTimeZone.forID(user.timeZone) def DateTimeFormatter tzAwareLongFormatter = DateTimeFormat.forPattern('MM/dd/yyyy HH:mm').withZone(dtz); 我认为这将是完美的,日期将保持UTC,然后作为欧洲/伦敦的用户tz我会看到日期格式正确. 然而,我得到的时间是7小时 所以它的行为就像它存储的日期时间根据它在服务器位置的内容,即使我在Bootstrap.groovy中设置默认时间. 有什么我应该设置而不必诉诸于更改服务器时间本身? 解决方法
似乎在引导程序中设置默认TZ是不够的,我不得不添加
-Duser.timezone=UTC 到JAVA_OPTS,到目前为止,日期显示正确. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |