JavaのLocalDateとequalsメソッドを完全解説!初心者でもわかる日付の比較方法
生徒
「Javaで日付同士が同じかどうかを比べたいんですけど、どうすればいいですか?」
先生
「日付の比較にはjava.timeパッケージのLocalDateクラスを使い、その中のequalsメソッドで比較できますよ。」
生徒
「equalsメソッドってどう使えばいいんですか?」
先生
「それでは、LocalDateクラスとequalsメソッドの基本から丁寧に説明しましょう!」
1. java.timeパッケージとは?
java.timeパッケージは、Java 8から導入された新しい日付と時間のAPIです。従来のjava.util.DateやCalendarに代わるもので、コードの可読性や使いやすさが大きく向上しています。
このパッケージには、日付・時刻・期間・フォーマット・タイムゾーンなどを扱う多くのクラスが含まれており、日常的な処理がシンプルに書けるようになっています。
その中でも、日付だけを扱いたいときに使えるのがLocalDateクラスです。
2. LocalDateクラスとは?
LocalDateクラスは、「年月日」のみを扱うクラスです。たとえば、「2025年9月4日」のようなカレンダーの日付を扱う場面で使います。時刻情報(時・分・秒)は持ちません。
次のようにLocalDateのインスタンスを作成できます。
import java.time.LocalDate;
public class LocalDateExample {
public static void main(String[] args) {
LocalDate today = LocalDate.now(); // 現在の日付
LocalDate birthday = LocalDate.of(1990, 12, 15); // 任意の日付を指定
System.out.println("今日の日付: " + today);
System.out.println("誕生日: " + birthday);
}
}
将来を見据えて、+αのスキルを身につけたい方へ
JavaやLinuxを学んでいても、「このままで市場価値は上がるのか」 「キャリアの選択肢を広げたい」と感じる方は少なくありません。
AIを学ぶならアイデミープレミアム3. equalsメソッドで日付を比較する
日付が同じかどうかを調べたいときは、equalsメソッドを使います。これは、2つのLocalDateオブジェクトが同じ年月日かを判定するためのメソッドです。
使い方は非常に簡単で、以下のように記述します。
import java.time.LocalDate;
public class EqualsExample {
public static void main(String[] args) {
LocalDate date1 = LocalDate.of(2025, 9, 4);
LocalDate date2 = LocalDate.of(2025, 9, 4);
LocalDate date3 = LocalDate.now();
System.out.println("date1とdate2は同じ日付か? " + date1.equals(date2));
System.out.println("date1とdate3は同じ日付か? " + date1.equals(date3));
}
}
上記を実行すると、以下のような結果が得られます。
date1とdate2は同じ日付か? true
date1とdate3は同じ日付か? false
4. equalsの注意点とポイント
equalsメソッドは、単に値が等しいかどうかを確認するだけで、時刻やタイムゾーンは無視されます。
ポイント:
LocalDate同士を比べないと常にfalseになる。nullとの比較には注意が必要。null.equals(何か)はNullPointerExceptionになる。equalsは「==」とは違い、オブジェクトの内容を比較する。
次のようなコードはエラーになります。
LocalDate date = null;
if (date.equals(LocalDate.now())) { // NullPointerExceptionの原因!
System.out.println("日付が一致しています");
}
これを避けるには、次のように書くと安全です。
if (LocalDate.now().equals(date)) {
System.out.println("安全な比較です");
}
5. equalsメソッドと他の比較との違い
equalsメソッドは「完全一致」を調べるのに対し、日付の前後を比較したい場合はisBeforeやisAfterメソッドを使います。
LocalDate date1 = LocalDate.of(2025, 9, 4);
LocalDate date2 = LocalDate.of(2025, 9, 10);
System.out.println(date1.isBefore(date2)); // true
System.out.println(date1.isAfter(date2)); // false
equalsは「等しいか」、isBeforeとisAfterは「前か後か」を判定するためのメソッドという違いがあります。
6. equalsはオブジェクト比較の基本
equalsメソッドは、Javaのオブジェクト比較の基本です。日付だけでなく、文字列や自作クラスなどの比較でも重要な役割を果たします。
たとえば、Stringクラスもequalsメソッドを持っており、同じ文字列かどうかを比較できます。
Java初心者は、equalsの考え方に慣れておくと、今後のプログラミングがとても楽になります。
Java Silver SE17(1Z0-825)の演習量を重視したい人には、 定番の問題集がこちらです。
徹底攻略 Java SE 17 Silver 問題集をAmazonで見る※ Amazonアソシエイト・プログラムを利用しています