null

Отмена перехода на зимнее время в Java

По утрам надев часы, не забудьте про трусы.

Операционная система обновлена тем или иным способом, всё перезагружено и должно правильно работать, но Java приложения почему-то упорно считают время по старому. Почему?

Всё очень просто - разработчики Java посчитали, что в операционных системах может быть недостаточно полная или устаревшая информация о существующих временных зонах, и решили тащить за Java еще и свой комплект описаний временных зон, который можно найти в каталоге jre/lib/zi.

Официальный путь заключается в рекомендации обновить JRE до актуальной версии, который сильно зависит от используемой системы. Но если по каким-то причинам нет желания или возможности этим путём, то можно просто обновить эти описания используя предоставляемый Oracle JDK DST Timezone Update Tool.

Для того, чтобы им воспользоваться необходимо зайти на страницу скачивания Java SE, найти там этот JDK DST Timezone Update Tool, скачать его, и, в простейшем случае, выполнить в терминале:

unzip tzupdater-1_3_42-2011k.zip
cd tzupdater-1.3.42-2011k
java -jar tzupdater.jar -u

Если у Вас используется несколько копий JRE, то последнюю команду надо выполнить для каждой копии, указывая полный путь к соответствующему интерпретатору java.

Проверить корректность установленных файлов временных зон можно используя команду:

java -jar tzupdater.jar -t

Успешных обновлений!