2017-02-20 20 views
0

Часовой пояс моей локальной машины HST. Но JVM дает мне часовой пояс CUT/UTC. Я пробовал использовать java -Duser.timezone = America/Adak Пример, но он устанавливает HST только для Example.class. Как/где можно I См./Изменение часового пояса JVM?как установить часовой пояс для jvm через командную строку

Значение ZONE в /etc/sysconfig/clock указывает только на часовой пояс HST.

class Example { 
public static void main(String[] args) { 
    System.out.println(java.util.TimeZone.getDefault()); 
} 
} 

Приведенный выше код дает мне UTC часовой пояс.

Я использую CentOS бродячего окно и Java 8.

я могу установить часовой пояс с помощью Java -Duser.timezone = America/АДАК

с помощью выше заявления мы наружно установки часового пояса. Но мы не принимаем часовой пояс по умолчанию/машины.

Я спрашиваю, как мы можем получить/посмотреть/изменить часовой пояс системы используя java.

+0

Что именно делать вы подразумеваете под «JVM, дающим мне часовой пояс UT/UTC»? Покажите свой код. –

+0

импорт java.util.TimeZone; класс Пример { public static void main (String [] args) { System.out.println (TimeZone.getDefault()); } } Вышеуказанный код дает мне часовой пояс UTC. Я использую CentOS. Я могу установить часовую зону с помощью java -Duser.timezone = America/Adak , используя вышеуказанный оператор, мы устанавливаем часовой пояс извне. Но мы не используем часовой пояс по умолчанию/машиной. Я спрашиваю, как мы можем получить часовой пояс. –

ответ

0

См. Текущий часовой пояс JVM, позвонив по телефону ZoneId.systemDefault().

Вы не объясняете, что является часовым поясом по умолчанию для вашей ОС хоста (который вы не описали) по сравнению с вашим ящиком Vagrant. Я не осведомлен о запуске Java в контейнерах, но я полагаю, что ваша реализация Java (которую вы еще не описали) выбирает по умолчанию либо из ОС хоста, либо из контейнера.

Всегда указывайте желаемый/ожидаемая зона

Но вот незадача: Вы не должны заботиться. Ваше Java-программирование никогда не должно опираться на текущий часовой пояс JVM. Ваш вопрос сам по себе является доказательством моей точки зрения.

Вместо этого всегда указывайте часовой пояс в своем коде.

Никогда не полагайтесь на зоны по умолчанию

Еще одна причина, вы никогда не должны зависеть от значения по умолчанию является то, что оно может быть изменено в любой момент во время выполнения (!) С помощью любого кода в любом потоке любого приложения, запущенного в виртуальной машины Java.

Вместо этого укажите желаемый/ожидаемый часовой пояс в качестве необязательного аргумента.

Например, чтобы получить текущий момент в зоне:

ZoneId z = ZoneId.of("America/Adak"); 
ZonedDateTime zdt = ZonedDateTime(z); 

Посмотрите на протяжении классов java.time, и вы увидите, что там, где часовой пояс или смещение имеет отношение вы можете передать ZoneId или ZoneOffset объект как необязательный аргумент.Лично я считаю, что программистам на Java было бы лучше, если бы эти аргументы были необходимы, а не факультативно, так как многие из нас не задумывались о проблеме часового пояса и смещения.

+0

Yaa мы можем изменить часовой пояс во время выполнения. но я хочу установить часовой пояс JVM в часовой пояс моей системы с первой попытки. Но ZoneId.systemDefault() дает мне часовой пояс UTC. Моя система находится в часовом поясе HST –

+0

@MaharjunM Вы все еще не объяснили, как именно вы получаете отчет о зоне по умолчанию, вы не разместили какой-либо код, вы не разгласили, какую ОС вы используете, и не указали, какую версию какую реализацию Java вы используете. Я не представляю, как вы ожидаете от нас помощи. Время закрыть этот вопрос. –

+0

import java.util.TimeZone; класс Пример { public static void main (String [] args) { System.out.println (TimeZone.getDefault()); } } Вышеуказанный код дает мне часовой пояс UTC. Я использую CentOS. Я могу установить часовую зону с помощью java -Duser.timezone = America/Adak , используя вышеуказанный оператор, мы устанавливаем часовой пояс извне. Но мы не используем часовой пояс по умолчанию/машиной. Я спрашиваю, как мы можем получить часовой пояс. –

0

Вы можете увидеть свой часовой пояс JVM путем

System.out.println(TimeZone.getDefault()); 

Вы можете установить его в JVM вызова, например, с помощью

java -Duser.timezone=HST ... 

или программно-то вроде

TimeZone.setDefault(TimeZone.getTimeZone("HST")); 
+0

Это только для определенного файла справа ?, Я хочу изменить конфигурацию jvm –

+1

@MaharjunM Я не понимаю, что вы имеете в виду под «для определенного файла». Это для процесса JVM, запускаемого java-вызовом. –

+0

Ha. то же самое. мы называем java -Duser.timezone = HST правильно? –

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