日時を比較する(compareTo)

広告

2つのCalendarクラスのオブジェクトを比較します。

compareTo
public int compareTo(Calendar anotherCalendar)

2 つの Calendar オブジェクトで表される時刻値 (エポックからのミリ秒単位のオフセット) を比較します。

パラメータ:
anotherCalendar - 比較対象の Calendar
戻り値:
引数で表される時刻がこの Calendar の表す時刻と等しい場合の値は 0。この Calendar の時刻が引数で表される時刻より前の場合は 0 未満の値。この Calendar の時刻が引数で表される時刻より後の場合は、0 より大きい値
例外:
NullPointerException - 指定された Calendar が null の場合
IllegalArgumentException - カレンダ値が無効なため、指定された Calendar オブジェクトの時刻値を取得できない場合

比較するCalendarクラスのオブジェクトを1970 年 1 月 1 日 00:00:00.000 GMT (グレゴリオ暦)からの経過ミリ秒数の値に変換し、その値を比較します。結果は等しいか進んでいるか遅れているかの判別だけです。実際の差は得られません。

サンプルプログラム

では実際に試してみましょう。

testCalendar4.java

import java.util.Calendar;

class testCalendar4{
  public static void main(String args[]){

    Calendar calendar1 = Calendar.getInstance();

    System.out.println("日時1を2006/05/08 09:45:10に設定します");
    calendar1.set(2006, 4, 8, 9, 45, 10);

    Calendar calendar2 = Calendar.getInstance();

    System.out.println("日時2を2006/05/11 12:58:15に設定します");
    calendar2.set(2006, 4, 11, 12, 58, 15);

    int diff = calendar1.compareTo(calendar2);

    if (diff == 0){
      System.out.println("日付1と日付2は同じ日時です");
    }else if (diff > 0){
      System.out.println("日付1は日付2より進んでいます");
    }else{
      System.out.println("日付1は日付2より遅れています");
    }
  }
}

上記を実際にコンパイルして実行してみると下記のようになります。

p4

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。