gpt4 book ai didi

java - java 8 中澳大利亚/墨尔本时区的日期时间日光节约问题

转载 作者:行者123 更新时间:2023-12-01 14:10:29 31 4
gpt4 key购买 nike

我得到了不同的夏令时开始和结束结果。

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

对于 2019 年上半年的夏令时,我得到的结果为 (2019-04-07T03:00**+10:00**[Australia/Melbourne])。 Java 正在减少 1 小时以抵消值(value)。但是对于后半天的节电时间(statement-2=> 2019-10-06T 03:00+11:00 [Australia/Melbourne]),java 将时间增加 1 小时,+1 到偏移值。

根据我的理解,java 应该增加 1 小时到偏移值(DST 结束),而当 DST 开始时,java 应该从时间减少 1 小时,从偏移值减少 1。

请帮助我澄清差异。是 java 8 问题还是我的理解不正确?

最佳答案

看着 DST transitions for Australia/Melbourne ,由于夏令时更改,时钟从未在 2019 年 10 月 6 日 02:00。这就是 DST 的工作原理:在 01:59:59.999999 之后,时钟跳到 03:00:00.000000。

这记录在 ZonedDateTime.of javadoc 中:

In the case of a gap, when clocks jump forward, there is no valid offset. Instead, the local date-time is adjusted to be later by the length of the gap. For a typical one hour daylight savings change, the local date-time will be moved one hour later into the offset typically corresponding to "summer".

关于java - java 8 中澳大利亚/墨尔本时区的日期时间日光节约问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60885885/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com