Ответ 1
Вы можете передать JVM этому параметру
-Duser.timezone
Например
-Duser.timezone=Europe/Sofia
и это должно сделать трюк. Установка переменной окружения TZ также делает трюк в Linux.
Я пытаюсь запустить 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"));
To Yours
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