如何改变Tomcat 7的服务器时区?
我的应用程序部署在美国洛杉矶的Debian vps中。 所以像new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date())
将返回America / Los Angeles的当前时间。
我可以在Tomcat的配置文件( server.xml
或catalina.sh
或者什么?)中进行一些设置,以便获取当前时间将返回指定的TimeZone,如GMT + 8或Asia / 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