Смещение DST не работает на моем сервере разработки

Мой рабочий сервер работает под управлением java8, а также мой комплект разработки. Я запускаю это и...

public static void main(String[] args) {
    TimeZone timeZone = TimeZone.getTimeZone("America/Santiago");
    Calendar st = Calendar.getInstance(timeZone);
    Calendar end = Calendar.getInstance(timeZone);
    st.set(2008, Calendar.JANUARY, 1, 0, 0, 0);
    end.set(2028, Calendar.DECEMBER, 31, 23, 59, 59);


    String actualOffset=null;

    ZonedDateTime timeActual = ZonedDateTime.ofInstant(st.toInstant(), timeZone.toZoneId());
    ZonedDateTime lastTime = ZonedDateTime.ofInstant(end.toInstant(), timeZone.toZoneId());

    do {
        if (!timeActual.getOffset().getId().equals(actualOffset)) {
            actualOffset=timeActual.getOffset().getId();
            System.out.println("Offset changed. " + timeActual.get(ChronoField.DAY_OF_MONTH) + "/" + timeActual.get(ChronoField.MONTH_OF_YEAR) + "/" + timeActual.get(ChronoField.YEAR) + ". New value " + actualOffset);
        }
        timeActual = timeActual.plusDays(1);
    } while (timeActual.isBefore(lastTime));
}

Я получил в разработке:

Смещение изменено. 1/1/2008. Новое значение -03:00
Смещение изменено. 30/3/2008. Новое значение -04:00
Смещение изменено. 12/10/2008. Новое значение -03:00
...

но если я запущу в производство, я получу только одну строчку:

Смещение изменено. 1/1/2008. Новое значение -03:00

Что случилось? Мой рабочий сервер находится под докером, это может быть что?

1 ответ

Вероятно, это связано с тем, что (по крайней мере) одна из ваших установок имеет устаревшие данные часового пояса для Чили.

Из Википедии мы видим, что политики несколько раз меняли правила в последние годы, что объясняет, что некоторые установки могут иметь устаревшие данные о часовых поясах. Установка Java не обновляется автоматически, когда политики передумали.

Решение состоит в том, чтобы использовать средство обновления часовых поясов для обновления базы данных часовых поясов вашей установки Java. Обновление до новейшей версии Java, которую вы можете получить, может быть другим вариантом, вы можете попробовать его, если хотите.

связи

Другие вопросы по тегам