Как правильно установить часовой пояс JVM

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

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

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).

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

6 ответов


вы можете передать JVM этот param

-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 хранится в path c:\users\%username%\appdata\locallow\sun\java\deployment добавить строку deployment.javaws.jre.1.args=-Duser.timezone\=my_time_zone