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]でアクセスできます。