Java で日時を比較するには、以下の方法があります。
DateクラスのcompareToメソッドで比較する
【JDK1.2以降】
Date クラスの compareTo メソッドで 2 つの日付を比較する場合、まず比較したい 2 つの Date オブジェクトを作成します。次にどちらかのオブジェクトの compareTo メソッドにもう片方のオブジェクトを引数として渡すことで、比較した結果が返ります。2 つの日付がまったく同じである場合は 0 を、比較元が引数の日付より前(より過去)である場合は負数を、より後(より未来)である場合は正数を返します。
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
public class sample1 {
public static void main (String[] args) {
try {
// 日付1を「2014/01/02」に設定します
Date date1 = DateFormat.getDateInstance().parse("2014/01/02");
// 日付2を「2014/02/03」に設定します
Date date2 = DateFormat.getDateInstance().parse("2014/02/03");
// 2つの日付を比較し、結果によってメッセージを変えます
int diff = date1.compareTo(date2);
if (diff == 0) {
System.out.println("日付1と日付2は同じです");
} else if (diff > 0) {
System.out.println("日付1は日付2より未来の日付です");
} else {
System.out.println("日付1は日付2より過去の日付です");
}
} catch (ParseException e) {
System.out.println(e);
}
}
}
※上記例では日付1は日付2より古い日付ですので、結果は「日付1は日付2より過去の日付です」と表示されます。
Date クラスの compareTo メソッドは JDK1.2 以降に実装された機能ですので、それ以前のバージョンでは after または before メソッドで代用することになります。
CalendarクラスのcompareToメソッドで比較する
【JDK1.5以降】
Calendar クラスの compareTo メソッドで 2 つの日時を比較する場合、まず比較したい 2 つの Calendar オブジェクトを作成します。次にどちらかのオブジェクトの compareTo メソッドにもう片方のオブジェクトを引数として渡すことで、比較した結果が返ります。
Calendar クラスの compareTo メソッドはエポック(1970 年 1 月 1 日 00:00:00.000 GMT【グレゴリオ暦】)からの経過ミリ秒数を比較するため、2 つの日時がミリ秒までまったく同じである場合に 0 を、比較元が引数の日時より前(より過去)である場合は負数を、より後(より未来)である場合は正数を返します。
import java.util.Calendar;
public class sample2 {
public static void main (String[] args) {
// 日時1を「2014/01/02 11:22:33」に設定します
Calendar cal1 = Calendar.getInstance();
cal1.set(2014, 0, 2, 11, 22, 33);
// 日時2を「2014/02/03 22:33:44」に設定します
Calendar cal2 = Calendar.getInstance();
cal2.set(2014, 1, 3, 22, 33, 44);
// 2つの日時を比較し、結果によってメッセージを変えます
int diff = cal1.compareTo(cal2);
if (diff == 0) {
System.out.println("日時1と日時2は同じです");
} else if (diff > 0) {
System.out.println("日時1は日時2より未来の日時です");
} else {
System.out.println("日時1は日時2より過去の日時です");
}
}
}
※上記例では日時1は日時2より先の日時ですので、結果は「日時1は日時2より未来の日時です」と表示されます。
Calendar クラスの compareTo メソッドは JDK1.5 以降に実装された機能ですので、それ以前のバージョンでは after または before メソッドで代用することになります。