我得到了不同的夏令时开始和结束结果。
ZoneId zone = ZoneId.of("Australia/Melbourne");
System.out.println(ZonedDateTime.of(2019, 04, 07, 3, 0, 0, 0, zone)); // statement-1
System.out.println(ZonedDateTime.of(2019, 10, 06, 2, 0, 0, 0, zone)); // statement-2
Run Code Online (Sandbox Code Playgroud)
对于 2019 年上半年的夏令时,我得到的结果为 (2019-04-07T03:00**+10:00**[Australia/Melbourne])。Java 正在减少 1 小时以抵消价值。但是对于后半天的节电(statement-2=> 2019-10-06T 03:00+11:00 [Australia/Melbourne]),java 将时间增加 1 小时,偏移值增加 +1。
根据我的理解,java 应该增加 1 小时到偏移值(DST 结束),当 DST 开始时,java 应该从时间开始减少 1 小时,从偏移值开始减少 1。
请帮助我澄清差异。是 java 8 问题还是我的理解不正确?