自昨天(2018 年 10 月 21 日)以来,我一直面临着 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 而 America/Cuiaba 应该是 -04
任何人都知道Java上时区信息的来源是什么?我可以做些什么来解决这个问题?我知道我可以通过设置固定的 GMT 偏移量来修复它,但我不喜欢它。
波斯汪
慕妹3242003
相关分类