OR
誰でも自由に記事を投稿・編集できるオープンリファレンス
記事ID:608
区分:プログラム  |  分類:Java  |  最終更新日:2014/08/28
クリエイティブ・コモンズ 表示-継承ライセンス 2.1
【Java】日時を比較する
関連タグ:Java, java.util.Date, java.util.Calendar
このエントリーをはてなブックマークに追加      
本文
履歴
編集
閲覧数: 141,004
Java関連技術まとめ > 【Java】日時を比較する

Java で日時を比較するには、以下の方法があります。

 

DateクラスのcompareToメソッドで比較する

【JDK1.2以降】

 

Date クラスの compareTo メソッドで 2 つの日付を比較する場合、まず比較したい 2 つの Date オブジェクトを作成します。次にどちらかのオブジェクトの compareTo メソッドにもう片方のオブジェクトを引数として渡すことで、比較した結果が返ります。2 つの日付がまったく同じである場合は 0 を、比較元が引数の日付より前(より過去)である場合は負数を、より後(より未来)である場合は正数を返します。

 

import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;

public class sample1 {
    public static void main (String[] args) {

        try {
            // 日付1を「2014/01/02」に設定します
            Date date1 = DateFormat.getDateInstance().parse("2014/01/02");

            // 日付2を「2014/02/03」に設定します
            Date date2 = DateFormat.getDateInstance().parse("2014/02/03");

            // 2つの日付を比較し、結果によってメッセージを変えます
            int diff = date1.compareTo(date2);
            if (diff == 0) {
              System.out.println("日付1と日付2は同じです");
            } else if (diff > 0) {
              System.out.println("日付1は日付2より未来の日付です");
            } else {
                System.out.println("日付1は日付2より過去の日付です");
            }

        } catch (ParseException e) {
            System.out.println(e);
        }
    }
}

※上記例では日付1は日付2より古い日付ですので、結果は「日付1は日付2より過去の日付です」と表示されます。

 

Date クラスの compareTo メソッドは JDK1.2 以降に実装された機能ですので、それ以前のバージョンでは after または before メソッドで代用することになります。

CalendarクラスのcompareToメソッドで比較する

【JDK1.5以降】

 

Calendar クラスの compareTo メソッドで 2 つの日時を比較する場合、まず比較したい 2 つの Calendar オブジェクトを作成します。次にどちらかのオブジェクトの compareTo メソッドにもう片方のオブジェクトを引数として渡すことで、比較した結果が返ります。
Calendar クラスの compareTo メソッドはエポック(1970 年 1 月 1 日 00:00:00.000 GMT【グレゴリオ暦】)からの経過ミリ秒数を比較するため、2 つの日時がミリ秒までまったく同じである場合に 0 を、比較元が引数の日時より前(より過去)である場合は負数を、より後(より未来)である場合は正数を返します。

 

import java.util.Calendar;

public class sample2 {
    public static void main (String[] args) {

        // 日時1を「2014/01/02 11:22:33」に設定します
        Calendar cal1 = Calendar.getInstance();
        cal1.set(2014, 0, 2, 11, 22, 33);

        // 日時2を「2014/02/03 22:33:44」に設定します
        Calendar cal2 = Calendar.getInstance();
        cal2.set(2014, 1, 3, 22, 33, 44);

        // 2つの日時を比較し、結果によってメッセージを変えます
        int diff = cal1.compareTo(cal2);
        if (diff == 0) {
            System.out.println("日時1と日時2は同じです");
        } else if (diff > 0) {
            System.out.println("日時1は日時2より未来の日時です");
        } else {
            System.out.println("日時1は日時2より過去の日時です");
        }
    }
}

※上記例では日時1は日時2より先の日時ですので、結果は「日時1は日時2より未来の日時です」と表示されます。

 

Calendar クラスの compareTo メソッドは JDK1.5 以降に実装された機能ですので、それ以前のバージョンでは after または before メソッドで代用することになります。

関連記事
外部リンク
- 記事検索 -