一尘不染

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

tomcat

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

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


阅读 423

收藏
2020-06-16

共1个答案

一尘不染

在所有可以设置时区的地方,通常,最好是在处理时间时显式设置时区。是的,您的服务器在洛杉矶,但是您的用户在哪里?

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

测试,冲洗,重复直到对配置满意为止。但要在所有不同级别上做出明确选择,就可以动手了。解决时区问题是Java而不是tomcat功能。

对于软件的可维护性而言, 始终 将时间存储在UTC中非常重要。如果您曾经存储在本地时区,那么计算任何其他时区都会很麻烦-
考虑夏令时,世界不同地区的时区变化等。

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

2020-06-16