如何更改Tomcat 7的服务器时区?

2022-09-02 00:52:47

我的应用程序部署在美国洛杉矶的 Debian vps 中。因此,像代码将返回美国/洛杉矶的当前时间。new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date())

我可以在Tomcat的配置文件中进行一些设置(或什么?),以便获取当前时间将返回指定的时区,如GMT + 8亚洲/台北???server.xmlcatalina.sh


答案 1

对于可以设置时区的所有不同位置,(通常)最好在处理时间时显式设置时区。是的,您的服务器位于洛杉矶,但是您的用户在哪里?

由于显式处理时区会使应用程序更加复杂(但也更正确,更不令人惊讶,更难测试),因此下一个最好的方法是显式使tomcat(java)知道您的服务器时钟设置为哪个时区。小心:有一些级别可以设置:将服务器时钟设置为UTC,将服务器操作系统配置为PST,然后让java知道服务器所在的时区,例如在do(或无论您的时区是什么)为您的时区配置Java。setenv.shCATALINA_OPTS="$CATALINA_OPTS -Duser.timezone=America/Los_Angeles"

测试,冲洗,重复,直到对配置满意为止。但是,在您可以设置的所有不同级别上将其作为明确的选择。解析时区更像是一个java,而不是tomcat功能。

对于软件的可维护性而言,始终以 UTC 格式存储时间非常重要。如果您曾经在当地时区存储,计算任何其他时区都将是一团糟 - 想想夏令时,世界不同地区时区的变化等。

因此:将服务器设置为UTC,然后获取当前时间,检查是否正确。出于显示目的,您可以使用(用户的)本地时区(例如 PST),但对于存储和计算,强烈建议使用 UTC。


答案 2

Tomcat 的个人时区将在其启动脚本中以如下形式指定:

-Duser.timezone=GMT

推荐