【发布时间】:2019-10-08 20:03:30
【问题描述】:
我正在将应用程序从 jdk 8 迁移到 11,我可以看到 ZonedDateTime 更改是关于夏令时的行为。 JDK8
ZonedDateTime parse = ZonedDateTime.parse("2037-05-10T19:15:00.000+01:00[Europe/Paris]");
System.out.println(parse);
输出: 2037-05-10T19:15+02:00[欧洲/巴黎]
JDK11/12
ZonedDateTime parse = ZonedDateTime.parse("2037-05-10T19:15:00.000+01:00[Europe/Paris]");
System.out.println(parse);
2037-05-10T20:15+02:00[欧洲/巴黎]
有人可以向我解释为什么他们会改变这种行为吗?
最好的问候,
【问题讨论】:
-
使用 AdoptOpenJDK 11.0.3 我得到
2037-05-10T20:15+02:00[Europe/Paris] -
对不起,我弄混了我的 sn-p。因此,由于夏季夏令时,使用 Jdk11/12 确实会增加一小时。在 jdk 8 上它是相同的日期时间 2037-05-10T19:15:00
-
欧盟似乎在2021年可能会放弃夏令时(DST)。你知道2037年10月巴黎是偏移+01:00还是+02:00?我怀疑它还没有决定。
-
底层时区数据库在您使用的两个版本之间发生了变化。关注 this question 以查看您使用的数据库版本,然后搜索 the tz-announce archive 以查看这些版本之间的变化。
标签: java java-8 java-11 zoneddatetime java-12