【Java】日数の差分を取得する(TimeUnit)

今回は、Javaの「java.util.concurrent.TimeUnit」を使用して日数の差分を取得する方法を紹介していきます。

java.util.concurrent.TimeUnit」は、Java 1.5(Java 5.0)から導入されているクラスになります。

TimeUnit (Java Platform SE 6)
スポンサーリンク

検証環境

検証に使用した環境/ライブラリを次に記載します。

  • Java
    • バージョン:9

使用方法

日数の差分を取得するために「TimeUnit」の「convert」メソッドを使用します。プログラム例は、次のようになります。

【プログラム例】

package com.fumidzuki;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.TimeUnit;

public class Main {
  public static void main(String[] args) throws Exception {
    SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
    Date date1 = format.parse("2021/10/01");
    Date date2 = format.parse("2021/10/20");
    System.out.print(TimeUnit.DAYS.convert(date2.getTime() - date1.getTime(), TimeUnit.MILLISECONDS));
  }
}

【実行結果】

19

【プログラム詳細】

差分を取得するための日付情報を2つ用意します。例では、「java.util.Date」を指定しています。

TimeUnit.DAYS」の「convert」メソッドは、指定した情報を「日数」へ変換した値を取得することができます。引数には、それぞれ次の値を指定します。

  • 指定時間
  • 指定時間の単位

「指定時間」は、変換対象の時間を指定します。

「指定時間の単位」に指定する単位は、今回の例では「TimeUnit.MILLISECONDS(ミリ秒)」にする必要があります。ミリ秒を指定するのは、「java.util.Date」の「getTime」メソッドで取得した結果がミリ秒になるためです。

日数の差分を取得するとき「過去日 - 未来日」の場合は負数になります。負数にしたくない場合は取得した後に「Math.abs」メソッドを使用して絶対値を取得することもできます。

まとめ

java.util.concurrent.TimeUnit」を使用して、日付の差分を取得する方法を紹介しました。