java.util.Date型ではcompareTo、after、beforeメソッドを使用して比較します。
「=、>、<」を明確に区別するためにcompareToメソッドが多く使用されている印象です。
compareToメソッドでの比較例
Javaソース
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
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ソース
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
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ソース
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
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が標準的な書き方になってきていますので、用途に応じて適切な日付クラスを選択すると、保守性や可読性の向上につながります。





