Javaを使って一日の始まりと終わりを知る方法

1.概要

この短いチュートリアルでは、さまざまなシナリオに対応する簡単でわかりやすい例を使用して、Javaで1日の始まりと終わりを知る方法を学びます。

これらの例を作成するには、http://www.oracle.com/technetwork/articles/java/jf 14-date-time -2125367.html[Java 8 Date/Time API]を使用します。

先に進む前にJava 8 Date and Time libraryについてもう少し読みたい場合は、 ここ を始めることができます。

2. LocalDate オブジェクトから

まず最初に、 httpsとして1日の始まりと終わりを指定する方法を見てみましょう。次のような オブジェクト

LocalDate localDate = LocalDate.parse("2018-06-23");

2.1. atStartOfDay()

特定の日の始まりを表す LocalDateTime を取得する最も簡単な方法は atStartOfDay() 方法:

LocalDateTime startOfDay = localDate.atStartOfDay();

このメソッドはオーバーロードされているため、https://docs.oracle.com/javase/8/docs/api/java/time/ZonedDateTime.html[ ZonedDateTime ]を取得したい場合は、次のように指定します。 ZoneId :

ZonedDateTime startOfDay = localDate.atStartOfDay(ZoneId.of("Europe/Paris"));

2.2. の()

同じ結果を得るためのもう1つの方法は、 of() メソッドを使用し、 LocalDate とhttps://docs.oracle.com/javase/8/docs/api/java/time/LocalTimeのいずれかを指定することです。 .html[ LocalTime ]の静的フィールド:

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. 当時の()

このメソッドはオーバーロードされているので、時間、分、秒、さらにはナノ秒を使用して希望の時間を指定できます。

この場合は、とにかく、指定された日の最後の瞬間を取得するための引数として LocalTime s 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);

しかし、このセクションでは、別の方法を分析して、指定された別の LocalDateTime オブジェクトから直接、時間セクションを1日の始まりまたは終わりに設定してオブジェクトを取得します。

3.1. with()

  • __https://docs.oracle.com/javase/8/docs/api/java/time/temporal/Temporal.html[Temporal interface]を実装しているすべてのクラスでこのメソッドを使用できます** 。

この場合は、 TemporalField (特に、TemporalField) を取るメソッドのシグネチャを使用します。フィールドの新しい値として、 https://docs.oracle.com/javase/8/docs/api/java/time/temporal/ChronoField.html 値)および long __引数のいずれかです。

LocalDateTime endOfDate = localDateTime.with(ChronoField.NANO__OF__DAY, LocalTime.MAX.toNanoOfDay());

4. ZonedDateTime オブジェクトから

ZonedDateTimeを指定した場合、 Temporalインターフェイス も実装されるので with()__メソッドを使用できます。

ZonedDateTime startofDay = zonedDateTime.with(ChronoField.HOUR__OF__DAY, 0);

5.まとめ

まとめると、さまざまなケースシナリオについて、Javaで1日の始まりと終わりを知るためのさまざまな方法を分析しました。

最後に、Javaの8つのDate and Timeライブラリクラスの洞察について学び、その多くのクラスとインタフェースに慣れました。

いつものように、すべての例はhttps://github.com/eugenp/tutorials/tree/master/java-dates[GitHub repository]でアクセスできます。