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