Javaの日付を比較する方法を解説!初心者でもわかるisBefore・isAfter・isEqualの使い方
生徒
「Javaで日付を比較する方法ってありますか?たとえば、ある日付が今日より前かどうかを調べたいんです。」
先生
「いい質問ですね。Javaでは、LocalDateクラスを使えば、簡単に日付の比較ができますよ。」
生徒
「どんなメソッドを使えばいいんですか?」
先生
「isBefore、isAfter、isEqualという便利なメソッドがあります。それぞれ、指定した日付より前・後・同じかを判定できるんですよ。」
生徒
「なるほど!それなら直感的に使えそうですね。」
先生
「では、具体的な使い方を見ていきましょう。」
1. Javaで日付を比較する基本:LocalDateクラスとは?
Javaで日付を扱う場合、java.timeパッケージに含まれるLocalDateクラスがよく使われます。
このLocalDateは、年・月・日を扱う日付クラスで、時刻は含まれません。
日付を比較するには、このLocalDateに用意されているisBefore、isAfter、isEqualを使います。
2. isBeforeで日付が前かどうかを判定する
isBeforeメソッドは、指定した日付より前かどうかを判定します。
たとえば、「ある締切日が今日より前かどうか」を調べたいときに使えます。
import java.time.LocalDate;
public class DateCompareExample {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
LocalDate deadline = LocalDate.of(2024, 12, 1);
if (deadline.isBefore(today)) {
System.out.println("締切日はすでに過ぎています。");
} else {
System.out.println("締切日はまだ先です。");
}
}
}
締切日はまだ先です。
3. isAfterで日付が後かどうかを確認する
isAfterメソッドは、指定した日付より後かを判定します。
たとえば、「イベントの日付が今日より後かどうか」を判断するのに便利です。
import java.time.LocalDate;
public class AfterCheckExample {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
LocalDate eventDate = LocalDate.of(2025, 1, 10);
if (eventDate.isAfter(today)) {
System.out.println("イベントはまだ開催されていません。");
} else {
System.out.println("イベントはすでに終わっています。");
}
}
}
イベントはまだ開催されていません。
4. isEqualで日付が一致しているかをチェックする
isEqualメソッドは、2つの日付が同じかどうかを判定します。
誕生日や記念日など、ピッタリ一致しているかを確かめたいときに使えます。
import java.time.LocalDate;
public class EqualDateExample {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
LocalDate birthday = LocalDate.of(2025, 9, 3);
if (birthday.isEqual(today)) {
System.out.println("今日は誕生日です!");
} else {
System.out.println("今日は誕生日ではありません。");
}
}
}
今日は誕生日です!
5. LocalDateを比較する際の注意点
Javaの日付比較では、LocalDate同士で比較することが重要です。
たとえば、LocalDateTimeやZonedDateTimeなど、時刻を含むクラスと比較すると意図しない結果になることがあります。
また、文字列や他の形式の日付と比較するには、一度LocalDateに変換する必要があります。例えば、日付を文字列から変換するには以下のようにします。
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class StringToDateExample {
public static void main(String[] args) {
String input = "2025-09-03";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate parsedDate = LocalDate.parse(input, formatter);
System.out.println("変換後の日付: " + parsedDate);
}
}
6. よくあるエラーとその対策
Javaで日付比較をする際によくあるエラーは、「NullPointerException」です。
LocalDateの変数がnullのままisBeforeなどを使おうとすると例外が発生します。
必ず、nullチェックやOptionalの活用を意識して、安全に比較処理を行いましょう。
7. Javaの日付比較でよく使うユースケース
Javaの日付比較(isBefore、isAfter、isEqual)は、以下のような実用的な場面でよく使われます:
- 予約日が現在日付より前かどうかのチェック
- イベントの開催日が未来かどうかを判定
- 登録日の重複を避けるために同一日付かを判定
- 有効期限チェック(期限切れかどうか)
このように、Javaで日付を正確に比較する方法を知っておくと、様々なシステム開発で役立ちます。