ZonedDateTime в Бразилии все еще получает -2 вместо -3 смещения - PullRequest
1 голос
/ 20 февраля 2020

Я работаю в приложении, которое использует Java 8, Maven и Spring. С 2019 года в Бразилии было отменено летнее время.

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

. Чтобы исправить проблему с часовым поясом, я обновил JRE и JDK до последних версий java 8, и поэтому все даты, указывающие на летнее время, начали возвращаться в обычное время. Благодаря этому мне удалось преобразовать даты, и я делал это в течение двух недель

Проблема в том, что сегодня, около обеда, все преобразования, которые я делал, внезапно вернулись, чтобы указать переход на летнее время. , даже ничего не обновляя

Пример:

calculatedList.forEach(dto -> {
    LocalDateTime date = dto.getResultDate();

    dto.setResultDate(date.atZone(ZoneId.of("UTC")).withZoneSameInstant(ZoneId.of("America/Sao_Paulo")).toLocalDateTime());
});

когда я писал этот код, я убедился, что преобразование заняло дату в ut c и довело ее до -3 , Теперь этот же метод конвертируется в -2

Я создавал подобные коды уже 2 недели, и до сих пор все работало так, как должно. Это очень расплывчатый вопрос, но я просто не могу представить, что я мог сделать, чтобы сделать часовой пояс go неправильным. Может ли кто-нибудь помочь мне понять, что случилось?

1 Ответ

3 голосов
/ 21 февраля 2020

На этой странице: https://www.oracle.com/technetwork/java/javase/tzdata-versions-138805.html

Бразилия больше не наблюдает летнее время, так как:

  • 13.0.1
  • 11.0. 5
  • 8u231
  • 7u241

, а ваша Java версия 1.8.0_221, которая не включает это изменение.

...