日時を比較する(compareTo)

広告

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

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 )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。