自从昨天(21/10/2018)以来,我一直在用Java解决时区问题。看来,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的时区信息的来源是什么?我能帮上忙吗?我知道我可以通过设置一个固定的GMT偏移量来修复它,但我不喜欢它。