java.util.Date型ではcompareTo、after、beforeメソッドを使用して比較します。
「=、>、<」を明確に区別するためにcompareToメソッドが多く使用されている印象です。
compareToメソッドでの比較例
Javaソース
import java.util.Calendar;
import java.util.Date;
public class DateDiffSample {
public static void main(String[] args) {
Calendar cal1 = Calendar.getInstance();
cal1.clear();
cal1.set(2022, 7, 14, 00, 00, 00);
Date date1 = cal1.getTime();
Calendar cal2 = Calendar.getInstance();
cal2.clear();
cal2.set(2022, 7, 15, 00, 00, 00);
Date date2 = cal2.getTime();
System.out.println("date1.compareTo(date1):" + date1.compareTo(date1));
System.out.println("date1.compareTo(date2):" + date1.compareTo(date2));
System.out.println("date2.compareTo(date1):" + date2.compareTo(date1));
}
}
コンソール
JavaDoc
afterメソッドでの比較例
Javaソース
import java.util.Calendar;
import java.util.Date;
public class DateDiffSample {
public static void main(String[] args) {
Calendar cal1 = Calendar.getInstance();
cal1.clear();
cal1.set(2022, 7, 14, 00, 00, 00);
Date date1 = cal1.getTime();
Calendar cal2 = Calendar.getInstance();
cal2.clear();
cal2.set(2022, 7, 15, 00, 00, 00);
Date date2 = cal2.getTime();
System.out.println("date1.after(date1):" + date1.after(date1));
System.out.println("date1.after(date2):" + date1.after(date2));
System.out.println("date2.after(date1):" + date2.after(date1));
}
}
コンソール
JavaDoc
beforeメソッドでの比較例
Javaソース
import java.util.Calendar;
import java.util.Date;
public class DateDiffSample {
public static void main(String[] args) {
Calendar cal1 = Calendar.getInstance();
cal1.clear();
cal1.set(2022, 7, 14, 00, 00, 00);
Date date1 = cal1.getTime();
Calendar cal2 = Calendar.getInstance();
cal2.clear();
cal2.set(2022, 7, 15, 00, 00, 00);
Date date2 = cal2.getTime();
System.out.println("date1.before(date1):" + date1.before(date1));
System.out.println("date1.before(date2):" + date1.before(date2));
System.out.println("date2.before(date1):" + date2.before(date1));
}
}
コンソール
JavaDoc
🔧補足:より精度が必要な場合について
今回の記事では Date クラスを使った日付比較や日数差分の取得方法を紹介しましたが、Date は古いAPIであり、細かいタイムゾーン管理やうるう年考慮、時間単位の厳密計算にはやや扱いづらい側面があります。
もし実務で時刻を含む精密な日付計算を行う場合や、日付操作が多いシステムを作る場合は、より新しい java.time パッケージ(LocalDate / LocalDateTime / ChronoUnit など)の利用を検討すると、コードが簡潔になり、意図も明確になります。
特に、Java 8以降では Date より新APIが標準的な書き方になってきていますので、用途に応じて適切な日付クラスを選択すると、保守性や可読性の向上につながります。





