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 | ナノ秒数 | |






