Javaを使用して1日の始まりと終わりを取得する方法
1. 概要
この短いチュートリアルでは、さまざまなシナリオの単純でわかりやすい例を使用して、Javaで1日の始まりと終わりを取得する方法を学習します。
Javaの8Date/ Time API を使用して、これらの例を作成します。
先に進む前にJavaの8日付と時刻ライブラリについてもう少し読みたい場合は、ここから始めることができます。
2. LocalDateオブジェクトから
まず、次のようなLocalDateオブジェクトとして指定された1日の開始または終了を取得する方法を見てみましょう。
LocalDate localDate = LocalDate.parse("2018-06-23");
2.1. atStartOfDay()
特定の日の始まりを表すLocalDateTimeを取得する最も簡単な方法は、 atStartOfDay()メソッドを使用することです。
LocalDateTime startOfDay = localDate.atStartOfDay();
このメソッドはオーバーロードされているため、 ZonedDateTime を取得する場合は、ZoneIdを指定して取得できます。
ZonedDateTime startOfDay = localDate.atStartOfDay(ZoneId.of("Europe/Paris"));
2.2. of()
同じ結果を得る別の方法は、 of()メソッドを使用して、LocalDateとLocalTimeの静的フィールドの1つを提供することです。
LocalDateTime startOfDay = LocalDateTime.of(localDate, LocalTime.MIDNIGHT);
LocalTime は、次の静的フィールドを提供します: MIDNIGHT (00:00)、 MIN (00:00)、 NOON (12:00 )、および MAX (23:59:59.999999999)。
したがって、1日の終わりを取得する場合は、MAXの値を使用します。
別の方法で試してみましょう。
2.3. atTime()
このメソッドはオーバーロードされており、時間、分、秒、さらにはナノ秒を使用して目的の時間を指定できます。
この場合、とにかく、LocalTimeのMAXフィールドを引数として使用して、特定の日の最後の瞬間を取得します。
LocalDateTime startOfDay = localDate.atTime(LocalTime.MAX);
2.4. atDate()
この例は前の例と非常に似ていますが、今回は LocalTimeオブジェクトのatDate()メソッドを使用し、LocalDateを次のように渡します。引数:
LocalDateTime endOfDate = LocalTime.MAX.atDate(localDate);
3. LocalDateTimeオブジェクトから
言うまでもなく、そこから LocalDate を取得し、セクション2のいずれかのメソッドを使用して、1日の終わりまたは開始を取得できます。
LocalDateTime localDateTime = LocalDateTime
.parse("2018-06-23T05:55:55");
LocalDateTime endOfDate = localDateTime
.toLocalDate().atTime(LocalTime.MAX);
ただし、このセクションでは、他の1つのメソッドを分析して、別の指定された LocalDateTime オブジェクトから直接、時刻セクションが1日の始まりまたは終わりに設定されたオブジェクトを取得します。
3.1. with()
Temporalインターフェースを実装するすべてのクラスは、このメソッドを使用できます。
この場合、 TemporalField (特に、 ChronoField Enum 値の1つ)とlong引数をとるメソッドのシグネチャを使用します。フィールドの新しい値:
LocalDateTime endOfDate = localDateTime.with(ChronoField.NANO_OF_DAY, LocalTime.MAX.toNanoOfDay());
4. ZonedDateTimeオブジェクトから
ZonedDateTime、が指定されている場合、 Temporal interface も実装しているため、 with()メソッドを使用できます。
ZonedDateTime startofDay = zonedDateTime.with(ChronoField.HOUR_OF_DAY, 0);
5. 結論
要約すると、さまざまなケースシナリオについて、Javaで1日の始まりと終わりを取得するさまざまな方法を分析しました。
最後に、Javaの8つの日付と時刻のライブラリクラスの洞察について学び、そのクラスとインターフェイスの多くに精通しました。
いつものように、すべての例は私たちのGitHubリポジトリでアクセスできます。