betweenメソッド
日付/時刻値の差を求める – betweenメソッド- public static Period between(LocalDate start, LocalDate end) … Period
- public static Duration between(Temporal start, Temporal end) … Duration(※)
- start:開始日時
- end:終了日時
Period/Duration#betweenメソッドを利用することで、日付時刻オブジェクト間の時間差を求めることができます。Periodは日付間隔を表す、Durationは時刻間隔を表すオブジェクトです。
※Temporalクラスは、Local/Offset/Zoned系クラスすべてのインターフェイスです。
以下は、あらかじめ用意した2個の日付/時刻の差を、Period/Duration#betweenメソッドで求める例です。
TimeBetween.java
package com.example.mynavi.datetime; import java.time.Duration; import java.time.LocalDateTime; import java.time.Period; public class TimeBetween { public static void main(String[] args) { LocalDateTime local1 = LocalDateTime.of( 2019, 1, 1, 12, 30, 0, 0); LocalDateTime local2 = LocalDateTime.of( 2020, 9, 23, 6, 15, 30, 0); System.out.println(local1); // 結果:2019-01-01T12:30 System.out.println(local2); // 結果:2020-09-23T06:15:30 Period period = Period.between(local1.toLocalDate(), local2.toLocalDate()); System.out.println("日付の差:" + period); // 結果:日付の差:P1Y8M22D System.out.println( "日付の差:" + period.getYears() + "年" + period.getMonths() + "ヶ月" + period.getDays() + "日間"); // 結果:日付の差:1年8ヶ月22日間 Duration duration = Duration.between(local1, local2); System.out.println( "時間の差:" + duration); // 結果:時間の差:PT15137H45M30S System.out.println( "時間の差:" + duration.toHours() + "時間"); // 結果:時間の差:15137時間 System.out.println( "時間の差:" + duration.toMinutes() + "分間"); // 結果:時間の差:908265分間 System.out.println( "時間の差:" + duration.getSeconds() + "秒間"); // 結果:時間の差:54495930秒間 } }
Period/Durationオブジェクトから日数や時間数を取得するには、以下のようなメソッドを利用します。
Period/Durationクラスの主なメソッド | ||
---|---|---|
クラス | メソッド | 概要 |
Period | getYears | 年数 |
getMonths | 月数 | |
getMonths | 月数 | |
Duration | toDays | 日数 |
toHours | 時間数 | |
toMinutes | 分数 | |
toMillis | ミリ秒数 | |
toNanos | ナノ秒数 |