Как изменить дату перехода на летнее время (DST) в компоненте p: calendar - PullRequest
0 голосов
/ 05 ноября 2018

У меня проблема с компонентом Primeface 6.0 calendar: обычно здесь, в Бразилии, мы применяем DST, добавляя 1h или часы в октябре. Исключительно в этом году правило было другим, добавление произошло только в прошлом ноябре 4-го. Как вы можете подтвердить на бразильских новостных страницах, это вызвало много путаницы с приложениями, многие из которых добавили 1 час дня до правильного 4 ноября. Одна из этих неправильных дат была 21 октября.

Это вызвало проблему с веб-приложением, которое я разрабатываю. Он показывает информацию, взятую из базы данных, которая заполнена данными, поступающими от многих промышленных оборудований. С 21 октября с 00:00 до 01:00 эти устройства правильно продолжали отправлять свои данные в базу данных, которая, в свою очередь, заполняла правильную таблицу этими временными метками. Проблема возникает, когда внутри веб-страницы просят просмотреть данные с 21 октября 00:00 - 01:00: компонент calendar ошибочно возвращает это недопустимое значение даты и времени, явно являющееся проявлением ситуации DST, которая была здесь в Бразилии.

Таким образом, правильное решение здесь - «научить» calendar дата-время с 00:00 до 01:00 21 октября - это действительно действительное время, и мой вопрос заключается в том, как это сделать. Я отмечаю, что на веб-сайтах этот компонент должен быть заполнен информацией о часовых поясах, полученной с локального сервера / компьютера, но, глядя на часы Windows Server, на котором находится страница, он правильно показывает, что изменение DST + 1h произошло 4 ноября. Я также посмотрел документацию Oracle java.util.TimeZone и не смог найти ничего, что упоминало бы создание настраиваемой информации о DST.

1 Ответ

0 голосов
/ 05 ноября 2018

Oracle публикует обновления часовых поясов для Java с помощью утилиты TZUpdater , а также обновлений для самой JRE .

Упомянутое вами изменение в Бразилии было опубликовано в tzdata 2018c. Из приведенной выше таблицы, которая была выпущена с версиями JRE 10, 8u172, 7u181 и 6u191. Вы можете просто обновить свою JRE до одной из этих версий или новее, и у вас будут правильные данные о часовом поясе. ИЛИ, вы можете запустить TZUpdater и сохранить свою JRE на любой версии.

Другой вариант - использовать ZIUpdater от Azul Systems, который работает как с Oracle JRE, так и с OpenJDK, а также с другими реализациями Java.

...