gpt4 book ai didi

java - ZonedDateTime.withZoneSameInstant 和 ZonedDateTime.withZoneSameLocal 有什么区别?

转载 作者:行者123 更新时间:2023-11-30 06:02:24 25 4
gpt4 key购买 nike

假设我有一个 ZonedDateTime:

ZonedDateTime zonedDateTime = 
ZonedDateTime.of(LocalDateTime.now(), ZoneId.of("US/Pacific"));

我想知道现在是柏林的哪个日期/时间。我有两种方法:

zonedDateTime.withZoneSameInstant(ZoneId.of("Europe/Berlin")); // probably this is the right one to get the corresponding date/time in Berlin

zonedDateTime.withZoneSameLocal(ZoneId.of("Europe/Berlin"));

withZoneSameLocal 方法的文档说:“只有在本地日期时间对新区域无效时才会更改本地日期时间...”并且不清楚何时会真正发生(任何例如?=))。

它们分别代表哪个日期/时间,有什么区别?

最佳答案

如果要将时间戳从一个时区转换为另一个时区,请使用 withZoneSameInstant()withZoneSameLocal() 将更改区域但保持所有其他字段相同。异常(exception)情况是该时区中的无效日期。

例如,

ZonedDateTime dtUTC = ZonedDateTime.parse("2019-03-10T02:30:00Z");
ZoneId pacific = ZoneId.of("US/Pacific");
System.out.println(dtUTC.withZoneSameInstant(pacific));
System.out.println(dtUTC.withZoneSameLocal(pacific));

prints

2019-03-09T18:30-08:00[US/Pacific]
2019-03-10T03:30-07:00[US/Pacific]

第一行是转换为另一个时区的原始时间戳。第二个尝试保留日期/时间字段,但 2:30 不是该日期的有效时间(因为夏令时跳跃),因此它移动了一个小时。

关于java - ZonedDateTime.withZoneSameInstant 和 ZonedDateTime.withZoneSameLocal 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55032725/

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