Я запускаю приложение Tomcat, и мне нужно отображать некоторые значения времени. К сожалению, наступает час. Я посмотрел в него и обнаружил, что мой TimeZone по умолчанию создается для:Java часовой пояс перепутался
sun.util.calendar.ZoneInfo[id="GMT-08:00",
offset=-28800000,
dstSavings=0,
useDaylight=false,
transitions=0,
lastRule=null]
Вместо того часового пояса Тихого океана. Это также указывается, когда я пытаюсь напечатать по часовой стрелке по умолчанию, и появляется «GMT-08: 00», что, по-видимому, указывает мне, что оно неправильно настроено в часовом поясе США в Тихоокеанском регионе. Я бегу на Ubuntu Hardy Heron, обновленный от Gutsy Gibbon.
Есть ли файл конфигурации, который я могу обновить, чтобы сообщить JRE использовать Pacific со всеми связанными с этим данными о летнем времени? Время на моей машине отображается правильно, поэтому, похоже, это неверная конфигурация OS.
Хорошо, вот вам обновление. Сотрудник предложил мне обновить JAVA_OPTS в моем/etc/profile, включив в него «-Duser.timezone = US/Pacific» (я также видел CATALINA_OPTS, который я также обновил). Фактически, я просто экспортировал изменение в переменные, а не использовал новый/etc/profile (перезагрузка позже подберет изменения, и я буду золотым).
Тем не менее, я по-прежнему считаю, что есть лучшее решение ... там должна быть конфигурация Java где-то, где говорится, какой временной зоной она пользуется, или как она захватывает часовой пояс. Если кто-то знает такую настройку, это будет потрясающе, но на данный момент это достойное решение.
Я использую 1,5, и это, безусловно, проблема с DST. Как вы можете видеть, в часовом поясе установлен не использовать летнее время. Я убежден, что он в целом установлен на -8 смещение, а не на конкретный часовой пояс в Тихоокеанском регионе. Так как общий -8-смещение не имеет информации о дневном свете, он, конечно, не использует его, но вопрос в том, где я могу сказать, что Java использует часовую зону Тихого океана при ее запуске? Я НЕ ищу программное решение, это должно быть решение для конфигурации.
+1: Я просто столкнулся с этим на полностью обновленном сервере Ubuntu 9.10. Sun JDK 1.6.0_15-b03, система настроена во время установки для часовой пояс США/Восточной зоны./etc/localtime содержит идентичное содержимое/usr/share/zoneinfo/US/Eastern. Java производит неверные результаты для дат между 15 марта 2010 года и 25 апреля. После замены файла символической ссылкой на/usr/share/zoneinfo/US/Eastern, теперь я получаю правильные результаты. Я изумлен, что эта ошибка: a) все еще открыта, b) затрагивает полностью обновленный сервер Ubuntu (9.10 - Karmic). – 2010-03-31 22:25:08
Ошибка отмечена как закрытая в Java версии 7 (b72). – Raedwald 2013-07-20 15:37:17