Java 8 Time API如何选择DST更改周期的偏移量

菲利普

在Java 8时间API中,您可以创建一个LocalDateTime,该时间与秋季DST时间更改(欧洲中部时间)之间的时间重叠。

您可以使用ZoneId将其转换为代表精确时间的ZonedDateTime。

这样做实际上并不能解决歧义-仍然可能有两个时刻对应于此LocalDateTime和该区域(但偏移量不同)。

时间API如何以及为什么(欢迎参考)选择时间偏移量?

@Test
public void TimeSetOnDST() throws Exception {
    LocalDateTime time = LocalDateTime.of(2016, 10, 30, 2, 30); // in the DST time overlap
    ZonedDateTime of = ZonedDateTime.of(time, ZoneId.of("Europe/Zurich"));
    System.out.println(of); // 2016-10-30T02:30+02:00[Europe/Zurich]
    // But why not 2016-10-30T02:30+01:00[Europe/Zurich] ?
    // Is this just "by convention"?
}
亚述

它在javadoc中有详细记录

在大多数情况下,本地日期时间只有一个有效偏移量。在重叠的情况下,当时钟调回时,有两个有效的偏移量。此方法使用通常对应于“夏季”的更早偏移量。

正如@JodaStephen在评论中所描述的,如果你想选择其他可用的偏移量,你可以使用withLaterOffsetAtOverlap方法

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章