2015-02-28 4 views
8

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

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

+0

возможно дубликат [Изменить Timezone в Tomcat] (http://stackoverflow.com/questions/12112188/change-timezone-in-tomcat) –

ответ

11

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

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

Протестируйте, промойте, повторите до тех пор, пока не будете довольны конфигурацией. Но сделайте его явным выбором на всех уровнях, на которых вы можете справиться. Разрешение часового пояса скорее java, чем функция tomcat.

Это очень важно для ремонтопригодности вашего программного обеспечения до всегда время магазина в UTC. Если вы когда-либо храните в своем местном часовом поясе, вычисление любого другого часового пояса будет бесполезным - подумайте о летних сбережениях, изменении часовых поясов в разных районах мира и т. Д.

Итак: установите ваш сервер в UTC, затем получите текущий время, проверьте правильность. Для целей отображения вы можете использовать локальный часовой пояс (пользовательский) (например, PST), но для хранения и расчета рекомендуется использовать UTC.

+0

Я думаю, что пользователи (со всего мира) должны получить время их собственный часовой пояс, например, вы публикуете твит в Twitter, и вы увидите, что он публикует время на временной шкале, только сейчас в вашем часовом поясе, независимо от того, откуда вы, поэтому ваше предложение ... –

+0

да - вот почему я спросил, где ваши пользователи. Лучше всегда обрабатывать часовой пояс. Хранить время только в UTC, * никогда * в любой другой часовой пояс. Я сделаю это более ясным в ответе. –

+1

Используйте 'America/Los_Angeles'. Не 'PST'. –

11

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

-Duser.timezone=GMT 
+0

эта работа здесь! –

0

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

: doStart сдвиг набор CATALINA_OPTS = -Duser.timezone = Америка/Денвер

1

Если вы хотите изменить его от затмения ... Run -> Run Конфигурация -> Apache Tomcat -> Tomcat Сервер -> аргументы VM add -Duser.timezone = America/Montreal

1

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

Смежные вопросы