gpt4 book ai didi

java-8 - ZonedDateTime 在夏季夏令时时会使用冬季的相同时区吗?

转载 作者:行者123 更新时间:2023-12-02 02:17:04 24 4
gpt4 key购买 nike

ZonedDateTime zdt = ZonedDateTime.of(2015, 10, 18, 0, 30, 0, 0,
ZoneId.of("America/Sao_Paulo"));
System.out.println(zdt); // 2015-10-18T01:30-02:00[America/Sao_Paulo]

当我们将小时设置为0时,您可以看到小时为1,夏令时时区为UTC-02:00时区应为 UTC-03:00

但这里有一个不同的例子:

ZonedDateTime zdt = ZonedDateTime.of(2015, 10, 18, 0, 30, 0, 0,
ZoneId.of("America/Los_Angeles"));
System.out.println(zdt); //2015-10-18T00:30-07:00[America/Los_Angeles]

您可以看到我们设置的夏令时时区为 UTC-07:00,小时为 0

为什么它们不同?

最佳答案

发生这种情况是因为您选择的时间介于巴西切换夏令时当晚的午夜和 01:00 之间。这个时间实际上是不可能的,因此您会得到 documentation 中描述的行为。 :

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".

您可以通过选择 3 月相应夜晚 02:00 到 03:00 之间的时间来观察 Los_Angeles 区域的相同行为:

zdt = ZonedDateTime.of(2015, 3, 8, 2, 30, 0, 0,
ZoneId.of("America/Los_Angeles"));
System.out.println(zdt);

关于java-8 - ZonedDateTime 在夏季夏令时时会使用冬季的相同时区吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44755318/

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