在 UTC 时间的 Mac 上运行 Webapp(更改 MacBook 时区或 tomcat 时区)

在 UTC 时间的 Mac 上运行 Webapp(更改 MacBook 时区或 tomcat 时区)

要运行我的 Web 应用,我需要在 MacBook 上将时区设置为 UTC。我可以通过打开 Konsole 并输入以下代码来临时执行此操作:

sudo ln -sf /usr/share/zoneinfo/UTC /etc/localtime

但是,当我重新启动机器时,我的时区恢复正常!

有什么建议吗?

编辑:'Celada' 对此问题的回答暗示我可以将我的服务器设为 UTC。我正在使用 Apache Tomcat 7。除了 Celada 的回复外,我如何将其设为 UTC?

更新 - 4 月 3 日:根据 Celada 的回复,我尝试SetEnv TZ UTC在 startup.sh 顶部添加。这似乎没有什么不同。经过一番研究,我尝试添加export JAVA_OPTS="-Duser.timezone=UTC"到 startup.sh,但这也没有效果。我是否将正确的命令添加到了正确的文件?

答案1

我认为如果您使用控制面板来更改时区,则每次重新启动时您的更改都不会被取消。

如果您担心每次重新启动时时区都会恢复,那么听起来您想使更改永久而不是暂时的,那么在这种情况下,为什么不直接使用控制面板呢?

如果此更改仅针对您的 Web 应用程序,那么为什么不只更改 Web 服务器的时区,而不是更改计算机上的全局时区?这应该很简单,只需添加

SetEnv TZ UTC

到 的结尾/etc/apache2/httpd.conf

如果这不起作用,可能是因为TZ需要设置变量Apache 无需设置即可启动经过Apache。在这种情况下,下面的方法更复杂,但肯定有效:

  1. 编辑/System/Library/LaunchDaemons/org.apache.httpd.plist

    添加线条

    <key>EnvironmentVariables</key>
    <dict>
            <key>TZ</key>
            <string>UTC</string>
    </dict>
    

    </dict>就在靠近底部的那一行之前

  2. 重新加载该配置

    launchctl unload /System/Library/LaunchDaemons/org.apache.httpd.plist
    launchctl load /System/Library/LaunchDaemons/org.apache.httpd.plist
    

所有这些都需要以 root 身份完成。

答案2

如果符号链接有效,您可以在启动时重新创建该符号链接。请参阅创建 launchd 作业

答案3

好了。我已成功将 tomcat 时区设置为 UTC。在 bin/catalina.sh 中,我添加了CATALINA_OPTS=-Duser.timezone=UTC

相关内容