Со вчерашнего дня я столкнулся с некоторыми проблемами, связанными с часовым поясом с Java (21/10/2018).Похоже, что java рассматривает возможность перехода на летнее время в Бразилии, но это не так.
Я создал следующий тест, чтобы быть уверенным
public static void main(String[] args) {
ZonedDateTime dateTime = LocalDateTime.now().atZone(ZoneId.systemDefault());
System.out.println(dateTime);
ZonedDateTime saoPaulo = dateTime.withZoneSameInstant(ZoneId.of("America/Sao_Paulo"));
ZonedDateTime cuiba = dateTime.withZoneSameInstant(ZoneId.of("America/Cuiaba"));
ZonedDateTime rightTime = dateTime.withZoneSameInstant(ZoneId.of("GMT-4"));
System.out.println(saoPaulo);
System.out.println(cuiba);
System.out.println(rightTime);
}
, который дал следующий результат
2018-10-22T09:55:34.473-02:00[America/Sao_Paulo]
2018-10-22T09:55:34.473-02:00[America/Sao_Paulo]
2018-10-22T08:55:34.473-03:00[America/Cuiaba]
2018-10-22T07:55:34.473-04:00[GMT-04:00]
Это неправильно, поскольку текущий часовой пояс для Сан-Паулу должен быть -03, а для Америки / Куябы - -04
Кто-нибудь знает, каков источник информации о часовом поясе на Java?Есть что-то, что я могу сделать на моей стороне, чтобы это исправить?Я знаю, что могу это исправить, установив фиксированное смещение по Гринвичу, но мне это не нравится.