カテゴリ: Java 更新日: 2026/01/25

JavaのDateクラスequalsメソッド完全解説!初心者でもわかる日付の等価比較

Date のequalsメソッド
Date のequalsメソッド

先生と生徒の会話形式で理解しよう

生徒

「Javaで日付同士が同じかどうかを判定するには、どんな方法がありますか?」

先生

「それにはjava.util.Dateクラスのequalsメソッドを使う方法がありますよ。」

生徒

「文字列の比較とは違うんですか?」

先生

「はい、日付の比較は文字列や数値とは少し違います。equalsメソッドはDateクラス専用のルールで動くので、しっかり理解しておきましょう!」

1. java.utilパッケージとDateクラスの概要

1. java.utilパッケージとDateクラスの概要
1. java.utilパッケージとDateクラスの概要

Javaで日付や時刻を扱う際には、java.utilパッケージに含まれるDateクラスが長年使われてきました。現在ではjava.timeパッケージのLocalDateLocalDateTimeなども利用されていますが、古いシステムやライブラリでは依然としてDateが使われていることがあります。

Dateクラスは、ミリ秒単位で日付や時刻を保持するための基本的なクラスで、日付の比較等価チェックに使われる重要なクラスです。

2. equalsメソッドとは何か?

2. equalsメソッドとは何か?
2. equalsメソッドとは何か?

equalsメソッドは、2つのオブジェクトが「等しい」かどうかを判定するためのJavaの基本メソッドです。Objectクラスで定義されており、各クラスで適切にオーバーライドされています。

Dateクラスでは、2つのDateオブジェクトのミリ秒までの時刻が完全に一致するかを判定するために、このequalsメソッドが使われます。

3. Dateクラスのequalsメソッドの使い方

3. Dateクラスのequalsメソッドの使い方
3. Dateクラスのequalsメソッドの使い方

それでは実際にequalsメソッドを使って、2つのDateオブジェクトが同じかどうかを判定してみましょう。


import java.util.Date;

public class DateEqualsExample {
    public static void main(String[] args) throws InterruptedException {
        Date date1 = new Date();
        Thread.sleep(1000); // 1秒待つ
        Date date2 = new Date();

        boolean isEqual = date1.equals(date2);
        System.out.println("同じ日付か?:" + isEqual);
    }
}

同じ日付か?:false

このように、作成時刻がわずかでも異なるとequalsfalseになります。

4. equalsで比較するポイントと注意点

4. equalsで比較するポイントと注意点
4. equalsで比較するポイントと注意点

java.util.Dateequalsメソッドを使う際の注意点は以下の通りです:

  • 比較対象がnullだとfalseになります(例外にはなりません)
  • ミリ秒単位で一致しなければfalseになるため、タイミングによっては「同じ日付でも一致しない」ことがあります
  • 時刻の表示形式が同じでも、内部のミリ秒が違えば一致しません

たとえば、「2025年9月4日 午前10時0分0秒000」と「2025年9月4日 午前10時0分0秒500」ではequalsの結果はfalseになります。

5. 同じ日付かどうかを判断する別の方法

5. 同じ日付かどうかを判断する別の方法
5. 同じ日付かどうかを判断する別の方法

equalsでは「厳密に同じ時刻か」を判定しますが、「年月日だけで比較したい」という場面も多くあります。その場合は、CalendarSimpleDateFormatを使って日付のフォーマットを整える方法があります。


import java.text.SimpleDateFormat;
import java.util.Date;

public class DateEqualsDayOnly {
    public static void main(String[] args) throws Exception {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        Date date1 = sdf.parse("20250904");
        Date date2 = sdf.parse("20250904");

        System.out.println("日付のみ比較:" + date1.equals(date2));
    }
}

日付のみ比較:true

このように、日付のフォーマットを整えればequalsで意図した比較ができます。

6. equalsと==の違い

6. equalsと==の違い
6. equalsと==の違い

Javaの初心者が混乱しやすいのがequals==の違いです。

  • equals:値の内容が同じかどうかを比較
  • ==:参照先のオブジェクトが同じかどうかを比較

たとえば次のようなコードでは、equalstrueでも、==falseになります。


Date a = new Date();
Date b = new Date(a.getTime());

System.out.println(a.equals(b)); // true
System.out.println(a == b);      // false

7. equalsはListやMapにも影響する

7. equalsはListやMapにも影響する
7. equalsはListやMapにも影響する

equalsHashMapArrayListなどのコレクションでも使われます。Dateがキーとして使われる場合、equalshashCodeが一致しなければ期待通りに動作しません。


import java.util.*;

public class DateMapExample {
    public static void main(String[] args) {
        Date date1 = new Date();
        Date date2 = new Date(date1.getTime());

        Map<Date, String> map = new HashMap<>();
        map.put(date1, "登録済み");

        System.out.println(map.get(date2)); // "登録済み"が出力される
    }
}

登録済み

このように、equalsの動作はコレクションの中でも非常に重要です。

Javaの基礎を最初から体系的に学びたい人には、 初心者向けで定評のある定番入門書がこちらです。

スッキリわかるJava入門 第4版をAmazonで見る

※ Amazon広告リンク

カテゴリの一覧へ
新着記事
New1
Spring
SpringDataJPAのJPAクエリメソッド「StartingWith」の使い方を完全ガイド!初心者向け解説
更新記事
New2
Spring
SpringDataJPAのJPAクエリメソッド「NotLike」の使い方を完全ガイド!初心者向け解説
更新記事
New3
Thymeleaf
Thymeleafのth:style属性を完全ガイド!初心者でもわかる動的スタイルの適用方法
更新記事
New4
Servlet
JavaのPart.getSubmittedFileNameメソッドの使い方を徹底解説!初心者でもわかるファイル名の取得方法
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Servlet
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.3
Java&Spring記事人気No3
Spring
Springの@Componentアノテーションの使い方を徹底解説!初心者でもわかるSpring Boot入門
No.4
Java&Spring記事人気No4
Spring
Spring Data JPA入門!findAll()やfindBy**()の使い方などデータベース操作の基礎を学ぶ
No.5
Java&Spring記事人気No5
Spring
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.6
Java&Spring記事人気No6
Java
Javaの@SuppressWarningsアノテーションの使い方を完全ガイド!初心者でもわかる警告の抑制方法
No.7
Java&Spring記事人気No7
Spring
SpringのModelクラスの使い方を完全ガイド!初心者でも安心
No.8
Java&Spring記事人気No8
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介

💻 作業効率アップに

長時間のコーディングでも疲れにくい♪ 静音ワイヤレスマウス

Logicool Signature M750 を見る

※ Amazon広告リンク