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

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

Javaで2つの日付を比較したい場合、Comparableインターフェースが提供するcompareTo()メソッドを使うのが基本的な方法です。このメソッドは、2つの日付を比較した結果を整数値(int型)として返します。

compareTo()メソッドの戻り値

  • 0 を返す … 両方の日付が等しい場合
  • 0 より大きい値を返す … date1 が date2 より後の日付の場合
  • 0 より小さい値を返す … date1 が date2 より前の日付の場合

構文

int compareTo(T o)

サンプルコード

以下の例では、SimpleDateFormatを使って文字列をDateオブジェクトに変換し、compareTo()メソッドで2つの日付を比較しています。

import java.text.*;
import java.util.Date;
public class CompareTwoDatesTest {
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat sdformat = new SimpleDateFormat("yyyy-MM-dd");
        Date d1 = sdformat.parse("2019-04-15");
        Date d2 = sdformat.parse("2019-08-10");
        System.out.println("日付1は: " + sdformat.format(d1));
        System.out.println("日付2は: " + sdformat.format(d2));
        if(d1.compareTo(d2) > 0) {
            System.out.println("日付1は日付2より後です");
        } else if(d1.compareTo(d2) < 0) {
            System.out.println("日付1は日付2より前です");
        } else if(d1.compareTo(d2) == 0) {
            System.out.println("両方の日付は等しいです");
        }
    }
}

この例では、日付 d1(2019-04-15)d2(2019-08-10) より前の日付であるため、コンソールには「日付1は日付2より前です」と表示されます。

実行結果

日付1は: 2019-04-15
日付2は: 2019-08-10
日付1は日付2より前です

補足:java.time(LocalDate)を使ったモダンな比較方法

java.util.Date はレガシーなクラスであり、現在ではJava 8以降で導入された Date-Time API(java.timeパッケージ) の使用が推奨されています。LocalDate クラスも Comparable を実装しているため、同じように compareTo() メソッドで比較できます。

import java.time.LocalDate;
public class LocalDateCompareTest {
    public static void main(String[] args) {
        LocalDate d1 = LocalDate.of(2019, 4, 15);
        LocalDate d2 = LocalDate.of(2019, 8, 10);
        int result = d1.compareTo(d2);
        if(result > 0) {
            System.out.println("d1はd2より後です");
        } else if(result < 0) {
            System.out.println("d1はd2より前です");
        } else {
            System.out.println("両方の日付は等しいです");
        }
    }
}

また、LocalDate には isBefore()isAfter()isEqual() といった直感的な名前の比較用メソッドも用意されており、可読性の高いコードを書くことができます。

  1. Javaで2つの画像を比較する方法:RGB差分から類似度をパーセンテージで算出

    2つの画像を比較する手順 Javaで2枚の画像を比較し、その差分をパーセンテージとして求めるには、以下の手順に従います。 ImageIO.read() メソッドを使って、比較対象となる2枚の画像を読み込みます。 それぞれの画像の幅と高さを取得し、両者のサイズが一致しているかを確認します。 各画像のピクセル値を取得し、そこからRGB(赤・緑・青)の各値を取り出します。 2枚の画像の対応するピクセル同士のRGB値の差をすべて合計します。 次の式を使って、差分の割合(パーセンテージ)を計算します。 Average = difference / (width × height × 3); Perc

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

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