Как правильно установить JVM TimeZone

Я пытаюсь запустить Java-программу, но она использует часовой пояс по умолчанию, а не часовой пояс, определенный ОС. Моя версия JDK – 1,5, а ОС – Windows Server Enterprise (2007)

В Windows указан центральный часовой пояс, но когда я запускаю следующую программу, он дает мне время по Гринвичу.

import java.util.Calendar; public class DateTest { public static void main(String[] args) { Calendar now = Calendar.getInstance(); System.out.println(now.getTimeZone()); System.out.println(now.getTime()); } } 

Вот результат

 sun.util.calendar.ZoneInfo[id="GMT", offset=0, dstSavings=0, useDaylight=false, transitions=0, lastRule=null] Mon Mar 22 13:46:45 GMT 2010 

Обратите внимание, что я не хочу устанавливать часовой пояс из приложения. Я хочу, чтобы часовой пояс, используемый JVM, должен быть указан в ОС. (Я не нахожу эти проблемы с другими серверами, которые имеют версию 1.4 JDK и Microsoft Server 2003).

Любые мысли будут высоко оценены.

Вы можете передать JVM этому параметру

 -Duser.timezone 

Например

 -Duser.timezone=Europe/Sofia 

и это должно сделать трюк. Установка переменной окружения TZ также делает трюк в Linux.

Вы также можете установить часовой пояс по умолчанию в своем коде, используя следующий код.

 TimeZone.setDefault(TimeZone.getTimeZone("UTC")); 

К вашим

  TimeZone.setDefault(TimeZone.getTimeZone("Europe/Sofia")); 

Принятый ответ выше:

 -Duser.timezone="Europe/Sofia" 

Не работает для меня точно. Я только смог успешно изменить свой часовой пояс, когда у меня не было котировок вокруг параметров:

 -Duser.timezone=Europe/Sofia 

В Windows 7 и JDK6 мне пришлось добавить -Duser.timezone="Europe/Sofia" в системную переменную JAVA_TOOL_OPTIONS, расположенную в разделе «Мой компьютер => Свойства => Дополнительные параметры системы => Переменные среды».

Если у вас уже есть другое свойство, установленное для JAVA_TOOL_OPTIONS просто добавьте пробел и вставьте строку свойств.

Если вы используете Maven :

 mvn -Dexec.args="-Duser.timezone=Europe/Sofia ....." 

В win7, если вы хотите установить правильный часовой пояс в качестве параметра в JRE, вам необходимо отредактировать файл deployment.properties хранящийся в пути c:\users\%username%\appdata\locallow\sun\java\deployment добавив строку deployment.javaws.jre.1.args=-Duser.timezone\= my_time_zone

  • Драйвер JDBC MySQL 5.1.33 - Проблема с часовым поясом
  • Параметр DateTime с часовым поясом формы PST / CEST / UTC / etc.
  • Преобразование между локальными временами и GMT / UTC в C / C ++
  • Как изменить часовой пояс mysql в java-соединении
  • Как хранить дату и время и временные метки в часовом поясе UTC с JPA и Hibernate
  • Получить имя часового пояса
  • Список идентификаторов Timezone для использования с FindTimeZoneById () в C #?
  • Получение даты с на несколько часов
  • Временные зоны MySQL
  • Всегда ли полезно хранить время в UTC или это тот случай, когда лучше хранить в местное время?
  • Как установить часовой пояс MySQL?
  • Давайте будем гением компьютера.