Как изменить часовой пояс сервера Tomcat 7?

мое приложение развернуто в Debian vps в США, Лос-Анджелес. Так что код вроде new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()) вернет текущее время Америки / Лос-Анджелеса.

могу ли я сделать некоторые настройки в файле конфигурации Tomcat (server.xml или catalina.sh или что?) так что получить текущее время вернет указанный часовой пояс, как GMT+8 или Азия/Тайбэй ???

5 ответов


со всеми различными местами, где вы можете установить часовые пояса, (в целом) всегда лучше явно установить часовой пояс, когда вы имеете дело со временем. Да, ваш сервер находится в Лос-Анджелесе, но где ваши пользователи?

поскольку явное обращение с часовыми поясами делает ваше приложение несколько более сложным (но также более правильным, менее удивительным, сложнее протестировать), следующим лучшим было бы явно сделать tomcat (java) знать, в каком часовом поясе установлены часы вашего сервера. Осторожный: Есть несколько уровней, чтобы установить это: Установите часы сервера в UTC, настройте серверную ОС на PST, а затем сообщите java о часовом поясе, на котором находится ваш сервер, например, в setenv.sh do CATALINA_OPTS="$CATALINA_OPTS -Duser.timezone=America/Los_Angeles" (или независимо от вашего часового пояса), чтобы настроить Java для вашего часового пояса.


личный часовой пояс Tomcat будет указан в его сценарии запуска в форме:

-Duser.timezone=GMT

Если вы хотите изменить его с eclipse... Выполнить --> выполнить конфигурацию --> Apache tomcat --> сервер Tomcat --> аргументы VM add-Duser.часовой пояс=Америка / Монреаль


в Linux просто добавьте следующую строку в setenv.sh который находится на CATALINA_HOME/bin/. CATALINA_OPTS="-Duser.timezone=Asia/{your zone}"


для Windows-перейти к Каталине.bat и добавить CATALINA_OPTS свойство (в разделе пуск).

:doStart сдвиг установить CATALINA_OPTS= - Duser.часовой пояс=Америка / Денвер