gpt4 book ai didi

java - 部署在服务器上时,Grails TimeZone 3 小时偏移

转载 作者:行者123 更新时间:2023-11-28 22:20:01 25 4
gpt4 key购买 nike

在我的 bootstrap.groovy 中添加:

TimeZone.setDefault(TimeZone.getTimeZone('America/Detroit'))

这在本地运行我的应用程序时工作得很好;它会正确更改时区。

但是当我将我的应用程序部署到运行 CentOS Linux 6.5 的 VPS 时,时间偏移了三个小时。注:增加了三个小时。

此外,我正在 Tomcat 7 上运行我的应用程序。我尝试添加:

export JAVA_OPTS="-Duser.timezone=America/Detroit"

到我的 setenv.sh 文件,但这似乎不起作用。

我的服务器的系统时间和硬件时间已正确设置并正常工作。所以我不知道为什么 Tomcat 将我的约会时间增加了三个小时!

感谢任何帮助或指导!

最佳答案

你不说:

  • 您的操作系统设置是什么
  • JVM 的默认设置是什么
  • 你是如何得到错误的日期时间值的?
  • 如果您费心验证计算机上的时钟时间是否正确。

所以很难诊断。

另外,这种方法是不明智的。使用代码更改 JVM 的默认时区会影响在 JVM 的所有线程中运行的所有代码。因此,您正在更改代码运行时的执行。

通常您的服务器应设置为 UTC,或者如果不可能,则设置为雷克雅未克冰岛。您的业​​务代码和存储应该采用 UTC,只有在用户界面中显示时,日期时间值才会根据用户所在的位置(或期望值)进行调整。最重要的是,您的代码应该始终指定所需的时区,而不是依赖于 JVM 的默认值。

希望您知道避免使用 Java 中捆绑的旧 java.util.Date 和 .Calendar 类,因为它们非常麻烦。而是使用 Joda-Time 或 Java 8 中的新 java.time。这两个框架都对时区有明确的支持。在 StackOverflow 中搜索许多示例。

提示:通过联系本地或 Internet 上的时间服务器以获取当前时间,在运行时验证服务器的时钟。然后与服务器的时间进行比较。如果相距太远,则记录错误或抛出异常等。

关于java - 部署在服务器上时,Grails TimeZone 3 小时偏移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24873403/

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