Java
 Computer >> コンピューター >  >> プログラミング >> Java

【Java入門】日付を比較する方法|compareTo()とequals()の使い方を解説

Javaで日付(Date)同士を比較するには、compareTo()メソッドを使用します。このメソッドは、呼び出し元の日付オブジェクトと引数に渡した日付オブジェクトを比較し、その大小関係を整数値として返します。

public int compareTo(Date anotherDate)

引数anotherDateには、比較対象となる日付を指定します。戻り値の意味は以下の通りです。

  • 0:引数の日付と等しい場合
  • 0より小さい値:この日付が引数の日付より前の場合
  • 0より大きい値:この日付が引数の日付より後の場合

compareTo()を使った比較例

実際に2つの日付を比較するサンプルコードを見てみましょう。

import java.util.*;
public class Demo {
    public static void main(String[] args) {
        // 2つの日付を作成
        Date date = new Date(19, 3, 25);
        Date date2 = new Date(19, 9, 12);
        // 3通りの比較を実行
        int comparison = date.compareTo(date2);
        int comparison2 = date2.compareTo(date);
        int comparison3 = date.compareTo(date);
        // 結果を出力
        System.out.println("Comparison Result:" + comparison);
        System.out.println("Comparison2 Result:" + comparison2);
        System.out.println("Comparison3 Result:" + comparison3);
    }
}

実行結果

Comparison Result:-1
Comparison2 Result:1
Comparison3 Result:0

date(3月25日)はdate2(9月12日)よりも前の日付なので-1、逆にdate2から見るとdateは後の日付なので1、同じ日付同士を比較した場合は0が返されます。このように、戻り値の符号を見ることで2つの日付の前後関係を簡単に判定できます。

equals()メソッドで日付が等しいか判定する

2つの日付が完全に一致しているかどうかを調べたい場合は、ミリ秒単位の差分をもとに判定するequals()メソッドが便利です。戻り値はboolean型で、等しければtrue、異なればfalseが返ります。

import java.util.*;
public class Demo {
    public static void main(String[] args) {
        // 同じ内容の日付を2つ作成
        Date date = new Date(70, 1, 10);
        Date date2 = new Date(70, 1, 10);
        // 等しいかどうかを判定
        boolean check = date.equals(date2);
        System.out.println("Dates are equal:" + check);
    }
}

実行結果

Dates are equal:true

両者とも同じ日時を表しているため、equals()の結果はtrueとなりました。

補足:新規コードではjava.timeパッケージの利用を推奨

なお、new Date(年, 月, 日)のようなコンストラクタは現在では非推奨(deprecated)となっています。Java 8以降では、java.timeパッケージのLocalDateクラスを使うのが一般的です。LocalDateにはisBefore()isAfter()isEqual()といった直感的な比較メソッドが用意されており、より安全で読みやすい日付処理を書くことができます。既存のコードではcompareTo()equals()がそのまま使えますが、新しく開発する場合はjava.time APIの活用を検討しましょう。

  1. Javaで2つの日付を比較する方法をわかりやすく解説!compareTo()の使い方と実行例

    Javaで2つの日付を比較したい場合、Comparableインターフェースが提供するcompareTo()メソッドを使うのが基本的な方法です。このメソッドは、2つの日付を比較した結果を整数値(int型)として返します。 compareTo()メソッドの戻り値 0 を返す … 両方の日付が等しい場合 0 より大きい値を返す … date1 が date2 より後の日付の場合 0 より小さい値を返す … date1 が date2 より前の日付の場合 構文 int compareTo(T o) サンプルコード 以下の例では、SimpleDateFormatを使って文字列をDateオブジェクトに

  2. Javaで文字列を比較する方法|equals()とequalsIgnoreCase()の使い分けを徹底解説

    Javaで文字列の等価性を比較する際は、Stringクラスが提供するequalsメソッドまたはequalsIgnoreCaseメソッドを使用するのが基本です。この記事では、それぞれのメソッドの使い方に加えて、==演算子で文字列を比較してはいけない理由についても詳しく解説します。 equals()メソッドで文字列を比較する 2つの文字列を比較し、大文字と小文字の違いまで厳密に判定したい場合はequals()メソッドを使用します。 次のコード例では、2つのStringインスタンスが大文字小文字を含むすべての文字において一致しているかどうかを判定しています。 public class Compare