在Java 8时间API中,您可以创建一个LocalDateTime,该时间落在秋季(中欧时间)夏令时变化期间的重叠时间内。
您可以使用ZoneId将其转换为表示精确时间的ZonedDateTime。
这样做实际上并没有解决歧义 - 在这个LocalDateTime和这个Zone(但具有不同的偏移量)仍然可能存在两个时间点。
时间API如何选择夏季偏移量以及原因(欢迎参考)?
您可以使用ZoneId将其转换为表示精确时间的ZonedDateTime。
这样做实际上并没有解决歧义 - 在这个LocalDateTime和这个Zone(但具有不同的偏移量)仍然可能存在两个时间点。
时间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"?
}
withLaterOffsetAtOverlap()
] (http://docs.oracle.com/javase/8/docs/api/java/time/ZonedDateTime.html#withLaterOffsetAtOverlap--)。(选择惯例是因为对于大多数用例来说,它比异常或其他参数更好。) - JodaStephenLocalDateTime
文档说它是一个“挂钟”,而这个约定遵循了我们在夏令时转换后第二天早上所假设的情况 :) - Pavel Zdenek