で使用するInterval
にLocalDateTime
は、これを行う必要があります。
Interval interval = new Interval( start.toDateTime(), end.toDateTime() );
結果の時刻は、ローカル タイム ゾーンから変換され、どのタイム ゾーンを扱っているかがわかるため、デバッグが容易になります。ただし、夏時間の期間中は問題が発生します。その結果を強制的に回避するにDateTimeZone.UTC
は、時間に関連付けられたタイムゾーン データが失われます (実際に LocalDateTime で開始したかどうかは通常は気にしませんが、一貫して使用し、 を使用Interval
せずに をビルドしないようにしてください)。変換。
Interval interval = new Interval(
start.toDateTime(DateTimeZone.UTC), end.toDateTime(DateTimeZone.UTC) );
これは、次のテストで実証されています (EST タイム ゾーンにいると仮定します)。
@Test
public void testLocalDateTimeDST() {
LocalDateTime dst_2017_03_12 = LocalDateTime.parse("2017-03-12T02:01:00");
System.out.println(dst_2017_03_12);
try {
System.out.println(dst_2017_03_12.toDateTime());
Assert.fail("Should've thrown an IllegalInstantException");
} catch (IllegalInstantException e) {
}
System.out.println(dst_2017_03_12.toDateTime(DateTimeZone.UTC));
}