広告 Java

JavaのDateクラスで日付の比較をする方法

JavaのDateクラスで日付の比較をする方法

スポンサーリンク

DateクラスのcompareToメソッド

Dateクラスに用意されているcompareToメソッドで日付の比較をすることができます。

  • 引数Dateと等しい場合は 0
  • 引数Dateより前の場合は -1
  • 引数Dateより後の場合は 1

具体的な使い方は次の通りです。

package main;

import java.util.Calendar;
import java.util.Date;

public class DateComparison {

  public static void main(String[] args) {

    // 2020年4月1日
    Calendar cal1 = Calendar.getInstance();
    cal1.set(2020, 3, 1, 0, 0, 0);
    cal1.clear(Calendar.MILLISECOND);
    Date date1 = cal1.getTime();

    // 2020年4月2日
    Calendar cal2 = Calendar.getInstance();
    cal2.set(2020, 3, 2, 0, 0, 0);
    cal2.clear(Calendar.MILLISECOND);
    Date date2 = cal2.getTime();


    // 同じ日付の比較
    System.out.println("同じ日付の比較:" + date1.compareTo(date1));
    // 異なる日付の比較
    System.out.println("過去日.compareTo(未来日):" + date1.compareTo(date2));
    System.out.println("未来日.compareTo(過去日):" + date2.compareTo(date1));
  }
}

【実行結果】

同じ日付の比較:0
過去日.compareTo(未来日):-1
未来日.compareTo(過去日):1

 

if文で比較する際の使用例は次の通りです。

// date1 == date2
if (date1.compareTo(date2) == 0) {
  System.out.println("同じ日付");
}
// date1 > date2
if (date1.compareTo(date2) > 0) {
  System.out.println("date2超過");
}

// date1 >= date2
if (date1.compareTo(date2) >= 0) {
  System.out.println("date2以上");
}

// date1 < date2
if (date1.compareTo(date2) < 0) {
  System.out.println("date2未満");
}

// date1 <= date2
if (date1.compareTo(date2) <= 0) {
  System.out.println("date2以下");
}

Dateクラスのbeforeメソッド

Dateクラスに用意されているbeforeメソッドで日付の比較をすることができます。beforeメソッドでは引数で指定された日付より前にあるかどうかを判定します。

  • 引数Dateより前の場合は true
  • 引数Dateより後の場合は false

具体的な使い方は次の通りです。

package main;

import java.util.Calendar;
import java.util.Date;

public class DateComparison2 {

  public static void main(String[] args) {

    // 2020年4月1日
    Calendar cal1 = Calendar.getInstance();
    cal1.set(2020, 3, 1, 0, 0, 0);
    cal1.clear(Calendar.MILLISECOND);
    Date date1 = cal1.getTime();

    // 2020年4月2日
    Calendar cal2 = Calendar.getInstance();
    cal2.set(2020, 3, 2, 0, 0, 0);
    cal2.clear(Calendar.MILLISECOND);
    Date date2 = cal2.getTime();


    // 同じ日付の比較
    System.out.println("同じ日付の比較:" + date1.before(date1));
    // 異なる日付の比較
    System.out.println("過去日.before(未来日):" + date1.before(date2));
    System.out.println("未来日.before(過去日):" + date2.before(date1));
  }
}

【実行結果】

同じ日付の比較:false
過去日.before(未来日):true
未来日.before(過去日):false

Dateクラスのafterメソッド

Dateクラスに用意されているafterメソッドで日付の比較をすることができます。afterメソッドでは引数で指定された日付より後にあるかどうかを判定します。

  • 引数Dateより前の場合は false
  • 引数Dateより後の場合は true

具体的な使い方は次の通りです。

package main;

import java.util.Calendar;
import java.util.Date;

public class DateComparison3 {

  public static void main(String[] args) {

    // 2020年4月1日
    Calendar cal1 = Calendar.getInstance();
    cal1.set(2020, 3, 1, 0, 0, 0);
    cal1.clear(Calendar.MILLISECOND);
    Date date1 = cal1.getTime();

    // 2020年4月2日
    Calendar cal2 = Calendar.getInstance();
    cal2.set(2020, 3, 2, 0, 0, 0);
    cal2.clear(Calendar.MILLISECOND);
    Date date2 = cal2.getTime();


    // 同じ日付の比較
    System.out.println("同じ日付の比較:" + date1.after(date1));
    // 異なる日付の比較
    System.out.println("過去日.before(未来日):" + date1.after(date2));
    System.out.println("未来日.before(過去日):" + date2.after(date1));

  }

}

【実行結果】

同じ日付の比較:false
過去日.before(未来日):false
未来日.before(過去日):true

 

helpful