В Java получить другое значение для TimeZone.getDefault (). GetID () на другой системе - PullRequest
2 голосов
/ 22 ноября 2011

Я получаю различное значение для TimeZone.getDefault (). GetID () в разных системах.Например, в случае индийского стандартного времени, в одной из систем мы получаем «GMT + 5: 30», а в другой - «Азия / Калькутта».Ожидается, что строки "Asia / calcutta" будут установлены на всех машинах.

Почему существует несоответствие для такого поведения?

Есть ли способ получить согласованное поведение в разных системах Windows / MAC?

Каков наилучший способ получить клиентачасовой пояс программно с использованием Java?

Ответы [ 2 ]

2 голосов
/ 22 ноября 2011

Похоже, что две машины настроены по-разному - это так просто. Например, если вашей первой системой является Windows, вы , возможно, сняли флажок с надписью «Автоматическая настройка на летнее время».

Если вы знаете, что вам нужна Азия / Калькутта для всех систем, используйте это явно. Если честно, я стараюсь избегать использования часового пояса по умолчанию. Даже когда я его использую, я пытаюсь использовать его явно , так что из кода очевидно, что я пытаюсь использовать системный часовой пояс, а не просто случайно .

0 голосов
/ 15 марта 2017

Если у кого-то такая же проблема в Linux и он не может найти ответ:

  • Две машины Linux установлены на UTC
  • одна JVM сообщает о неправильном часовом поясе (например,CET)
  • другой отчет правильно UTC

Проблема может быть:

  • Неисправный компьютер имеет следующую символическую ссылку: /etc/localtime -> /usr/share/zoneinfo/Europe/Paris
  • /usr/share/zoneinfo/Europe/Paris содержит UTC информацию

Причиной этого могла быть простая cp /usr/share/zoneinfo/UTC /etc/localtime замена содержимого /usr/share/zoneinfo/Europe/Paris вместо перезаписи /etc/localtime, которая быласимволическая ссылка вместо файла!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...