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

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

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

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

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

测试,冲洗,重复直至满意配置。 但是,在所有不同级别上,您可以将其设置为明确的选择。 解析时区相当于java而不是tomcatfunction。

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

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

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

 -Duser.timezone=GMT 

如果你想从eclipse中更改它…运行 – >运行配置 – > Apache tomcat – > Tomcat服务器 – > VM参数add -Duser.timezone = America / Montreal

在Linux中只需在setenv.sh添加以下行,该行位于CATALINA_HOME/bin/CATALINA_OPTS="-Duser.timezone=Asia/{your zone}"

对于Windows – 转到catalina.bat并添加CATALINA_OPTS属性(在启动时)。

:doStart shift set CATALINA_OPTS = -Duser.timezone = America / Denver