У меня совершенно странная проблема на одной из моих машин. Я написал программу, которая отслеживает события с наших серверов и отображает их на ПК мониторинга. Однако каждое сообщение о состоянии события также содержит TIMESTAMP, который извлекается следующими вызовами:
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
return sdf.format(cal.getTime());
с
public static final String DATE_FORMAT_NOW = "гггг-мм-дд чч: мм: сс";
Я ожидаю, что этот звонок вернет местное время, которое до сегодняшнего дня прекрасно работало. Но теперь моя программа показывает мне местное время +3 часа на каждом входящем событии. Перезапуск файла JAR не помогает вообще, и Системное время также настроено правильно. Эта программа работает на машине, которая синхронизирует свое время с центральными корпоративными часами.
Может кто-нибудь объяснить мне упомянутое поведение и / или заявить о возможном решении, которое не является «перезагрузите компьютер и попробуйте снова» :-)?
Cliffs:
- Время запуска работает на моем или любом другом компьютере, когда я запускаю Программу
- Целевая машина работает 24/7 и является только машиной мониторинга, поэтому никто не меняет там никаких опций
- До сегодняшнего дня все работало нормально.
- Все настройки времени / часового пояса на хост-системе (Windows XP) верны. (проверяется через CMD -> «date», а также через Системные настройки)
Я ценю любой ответ на этот вопрос. Спасибо за ваше время!
Вопрос ответили уже с 25. Я реализовал явный вызов Timezone.setDefault (), чтобы убедиться, что правильный часовой пояс отображается все время. Я закрою этот вопрос сейчас.
Спасибо всем за ответы!