Javaの日付を比較する方法はいろいろある。内部的には、日付は1970年1月1日からの経過ミリ秒数という(長い)時点として表現されます。Javaでは、日付はオブジェクトであり、比較のための複数のメソッドを含んでいます。2つの日付を比較するどのメソッドも、基本的には日付の時間を比較する。
compareToを使う
-
compareToを使用します。DateはComparable
を実装しているので、2つの日付をcompareToメソッドで直接比較することができます。日付が同じ時点のものであれば、このメソッドはゼロを返します。比較される日付が引数 date より前の場合は、0 より小さい値が返されます。比較される日付が引数 date より後の場合は、0 より大きい値が返されます。日付が等しい場合は、0 が返されます。 -
日付オブジェクトを作成する。比較を始める前に、それぞれの日付オブジェクトを作成する必要があります。これを行う一つの方法は、SimpleDateFormatクラスを使用することです。これは、日付オブジェクトに日付の値を簡単に入力することができます。Date date1 = sdf.parse("1995-02-23"); //date1は1995年2月23日 Date date2 = sdf.parse("2001-10-31"); //date2は2001年10月31日 Date date3 = sdf.parse("1995-02-23"); //date3は1995年2月23日
-
日付オブジェクトを比較する。以下のコードでは、それぞれの場合(以下、等しい、以上)を示している。date1.compareTo(date2); //date1 < date2、0より小さい値を返す date2.compareTo(date1); //date2 > date1、0より大きい値を返す date1.compareTo(date3); //date1 = date3、コンソールに0を出力する
等号、後、前を使う
-
equals、after、beforeを使う。equals、after、beforeメソッドで日付を比較することができます。2つの日付が同じ時点のものであれば、equalsメソッドはtrueを返します。この例では、compareTo メソッドで以前に作成した日付を使用します。
-
before メソッドを使用して比較します。以下のコードは真と偽の場合を示しています。date1 が date2 よりも前の場合、before は true を返します。そうでない場合、before は false を返します。System.out.print(date1.before(date2)); //prints true System.out.print(date2.before(date2)); //prints false
-
afterメソッドを使って比較する。以下のコードは、真の場合と偽の場合を示している。date2がdate1の後であれば、afterはtrueを返す。そうでない場合、afterはfalseを返す。System.out.print(date2.after(date1));//prints真 System.out.print(date1.after(date2));//prints偽
-
equalsメソッドを使って比較する。以下のコードは、真の場合と偽の場合を示している。日付が等しい場合、equalsはtrueを返します。等しくない場合、equalsはfalseを返します。System.out.print(date1.equals(date3));//prints true System.out.print(date1.equals(date2));//prints false
カレンダー・クラスを使う
-
カレンダーを使います。カレンダークラスにもcompareToメソッド、equalsメソッド、afterメソッド、beforeメソッドがあり、これらは上記のdateクラスと同じように動作します。そのため、日付情報がカレンダーに保持されている場合は、比較を実行するためだけに日付を抽出する必要はありません。
-
Calendarのインスタンスを作成します。Calendarメソッドを使うには、いくつかのCalendarインスタンスが必要です。幸いなことに、すでに作成されているDateインスタンスから時刻を取得すればよい。Calendar cal1 = Calendar.getInstance(); //Calendar1を宣言 Calendar cal2 = Calendar.getInstance(); //Calendar2を宣言 Calendar cal3 = Calendar.getInstance(); //Calendar3を宣言 cal1.setTime(date1); //Cal1に日付を適用 cal2.setTime(date2); cal3.setTime(date3);
-
beforeを使ってcal1とcal2を比較する。以下のコードは、cal1がcal2より前にあるので、trueを表示するはずである。System.out.print(cal1.before(cal2)); //trueを表示する。
-
cal1とcal2をafterで比較する。cal1はcal2より前なので、以下のコードはfalseを表示する。System.out.print(cal1.after(cal2)); //false を表示する。
-
equalsを使ってcal1とcal2を比較する。以下のコードでは、trueの場合とfalseの場合の例を示します。条件は、比較されるカレンダーのインスタンスに依存します。コードは、"true "を表示し、次の行で "false "を表示する。System.out.println(cal1.equals(cal3)); //prints true: cal1 == cal3 System.out.print(cal1.equals(cal2)); //prints false: cal1 != cal2
getTimeを使う
-
getTimeを使う。2つの日付の時点を直接比較することも可能だが、これまでのアプローチの方が読みやすく、好ましいだろう。これは2つのプリミティブなデータ型の比較になるので、"<"、">"、"=="を使って行うことができる。
-
長い時間オブジェクトを作成する。日付を比較する前に、先に作成したDateオブジェクトのデータで長整数を作成しなければなりません。幸運なことに、getTime() メソッドがほとんどの作業をやってくれます。long time1 = getTime(date1); //date1からプリミティブtime1を宣言 long time2 = getTime(date2); //date2からプリミティブtime2を宣言
-
小なり比較を行う。これら2つの整数値を比較するには、小なり記号(<)を使います。time1はtime2より小さいので、最初のメッセージを表示する。適切な構文のためにelse文が含まれている。
-
大小比較を行う。大なり記号 (>) を使って、2つの整数値を比較します。time1はtime2より大きいので、最初のメッセージが表示されます。適切な構文のために else 文が含まれています。if(time2 > time1){ System.out.println("date2はdate1の後です"); //time2>time1なので、表示されます } else{ System.out.println("date2はdate1の後ではありません"); }。
-
等号比較を行う。等しいかどうかをチェックする記号(==)を使って、2つの整数値が等しいかどうかを比較します。time1はtime3と等しいので、最初のメッセージが表示されるはずです。プログラムがelse文に到達したら、それは時間が等しくないことを意味します。if(time1 == time2){ System.out.println("日付は等しい"); } else{ System.out.println("日付は等しくない"); //time1!=time2なので表示される }。
if(time1 < time2){ System.out.println("date1はdate2より前"); //time1 -
シェアボタン: このページをSNSに投稿するのに便利です。
コメント
最新を表示する
NG表示方式
NGID一覧