Java 8時間APIでは、秋(中部ヨーロッパ時間)のDST時間変更中に時間の重複に該当するLocalDateTimeを作成できます。Java 8時間APIでDST変更期間のオフセットを選択する方法
ZoneIdを使用して正確な瞬間を表すZonedDateTimeに変換することができます。
これを実行しても実際にはあいまいさは解消されません。このLocalDateTimeとこのゾーンに対応する2つの瞬間が存在する可能性があります(オフセットは異なります)。
時間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"?
}
ありがとうございました。私はちょうどその後の大会によると思います。 – Philipp
規約を変更する場合は、単に['withLaterOffsetAtOverlap()'](http://docs.oracle.com/javase/8/docs/api/java/time/ZonedDateTime.html#withLaterOffsetAtOverlap--)を使用してください。 (大部分のユースケースでは例外または追加のパラメータよりも優れているため、大会が選ばれました) – JodaStephen
私はその慣習を賢明に選んだと感じます。 'LocalDateTime' docはそれが「ウォールクロック」だと言っており、DSTシフト後の朝起きるときに私たちが想定している通りにコンベンションが行われています:) –