Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職

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.now();
    LocalDateTime local2 = LocalDateTime.of(
        2017, 9, 23, 10, 15, 30, 0);
    System.out.println(local1);	// 結果:2016-01-01T12:30
    System.out.println(local2);	// 結果:2017-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(15137時間45分30秒を表す)
    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 ナノ秒数
日付/時刻(Date-Time API)
日付/時刻(Date-Time API)
now/of/parseメソッド
betweenメソッド
日時データを演算する
Date/Calendarクラス⇔DateTime-APIのクラスを相互変換する

Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職