如何更改 Tomcat 7 的服务器时区?
Posted
技术标签:
【中文标题】如何更改 Tomcat 7 的服务器时区?【英文标题】:How to change Tomcat 7's server timezone? 【发布时间】:2015-04-30 21:19:10 【问题描述】:我的应用程序部署在美国洛杉矶的 Debian vps 中。所以像new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date())
这样的代码将返回美国/洛杉矶的当前时间。
我可以在 Tomcat 的配置文件(server.xml
或 catalina.sh
还是什么?)中进行一些设置,以便获取当前时间将返回指定的时区,如 GMT+8 或 Asia /台北 ???
【问题讨论】:
Change Timezone in Tomcat的可能重复 【参考方案1】:对于所有可以设置时区的不同地方,在处理时间时,(通常)总是最好明确设置时区。是的,您的服务器在洛杉矶,但您的用户在哪里?
由于显式处理时区会使您的应用程序更复杂(但也更正确、更少令人惊讶、更难测试),因此下一个最好的方法是显式让 tomcat (java) 知道您的服务器时钟设置为哪个时区。小心:有一些级别可以设置:将您的服务器时钟设置为 UTC,将您的服务器操作系统配置为 PST,然后让 java 知道您的服务器所在的时区,例如在setenv.sh
中执行CATALINA_OPTS="$CATALINA_OPTS -Duser.timezone=America/Los_Angeles"
(或任何您的时区)为您的时区配置Java。
测试、冲洗、重复,直到对配置满意为止。但是,让它成为您可以着手的所有不同级别的明确选择。解析时区是 java 而不是 tomcat 的功能。
始终以 UTC 存储时间对于软件的可维护性非常重要。如果您曾经存储在本地时区,计算任何其他时区将是一团糟——想想夏令时、世界不同地区的时区变化等。
所以:将您的服务器设置为 UTC,然后获取当前时间,检查它是否正确。出于显示目的,您可以使用(用户的)本地时区(例如 PST),但对于存储和计算,强烈建议使用 UTC。
【讨论】:
我认为(来自世界各地的)用户应该得到他们自己时区的时间,例如你在 Twitter 上发布一条推文,你会看到他在时间轴上发布的时间刚刚在你的时区没有不管你来自哪里,所以你的建议是...... 是的 - 这就是我问你的用户在哪里的原因。最好始终明确处理时区。仅以 UTC 存储时间,从不在任何其他时区。我会在答案中更清楚地说明这一点。 使用America/Los_Angeles
。不是PST
。【参考方案2】:
Tomcat 的个人时区将在其启动脚本中以如下形式指定:
-Duser.timezone=GMT
【讨论】:
【参考方案3】:对于 Windows - 转到 catalina.bat 并添加 CATALINA_OPTS 属性(在开始下)。
:doStart 转移 设置 CATALINA_OPTS=-Duser.timezone=美国/丹佛
【讨论】:
【参考方案4】:如果你想从 eclipse 中改变它...运行 --> 运行配置 --> Apache tomcat --> Tomcat 服务器 --> VM arguments add -Duser.timezone=America/Montreal
【讨论】:
【参考方案5】:在 Linux 中,只需在 setenv.sh
中添加以下行,即 CATALINA_HOME/bin/
。
CATALINA_OPTS="-Duser.timezone=Asia/your zone"
【讨论】:
以上是关于如何更改 Tomcat 7 的服务器时区?的主要内容,如果未能解决你的问题,请参考以下文章