Javaでの時間(Time)、日付(Date)比較する方法を紹介します。
- Java8でLocalDateTime、LocalDate、LocalTime、ZonedDateTimeが提供されます。
このAPIの日付/時刻を比較することができます。
- Java8以前に使用したDate、Calendarで日付/時刻を比較することができます。
Java8の日付/時刻APIの比較
LocalDateTime、LocalDate、LocalTime、ZonedDateTimeは次のメソッドを提供します。
- isBefore():引数よりも過去のときにtrueが返さ
- isAfter():引数よりも未来の時、trueが返さ
- isEqual():引数と同じ時間になるtrueが返さ
public void compareDate1() throws ParseException {
LocalDateTime date1 = LocalDateTime.parse("2019-07-12T10:11:50.000");
LocalDateTime date2 = LocalDateTime.parse("2019-11-12T15:20:31.000");
if (date1.isBefore(date2)) {
System.out.println("Date1 is before Date2");
}
if (date1.isAfter(date2)) {
System.out.println("Date1 is after Date2");
}
if (date1.isEqual(date2)) {
System.out.println("Date1 is equal Date2");
}
}
結果
2019-07-12T10:11:50
2019-11-12T15:20:31
Date1 is before Date2
Dateの日付の比較
Dateクラスは、次のメソッドを提供します。
- before():引数よりも過去のときにtrueが返さ
- after():引数よりも未来の時、trueが返さ
- equal():引数と同じ時間になるtrueが返さ
public void compareDate2() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdf.parse("2019-07-12");
Date date2 = sdf.parse("2019-11-01");
System.out.println(sdf.format(date1));
System.out.println(sdf.format(date2));
if(date1.after(date2)){
System.out.println("Date1 is after Date2");
}
if(date1.before(date2)){
System.out.println("Date1 is before Date2");
}
if(date1.equals(date2)){
System.out.println("Date1 is equal Date2");
}
}
結果
2019-07-12
2019-11-01
Date1 is before Date2
Dateの日付の比較(compareTo)
DateクラスはcompareTo()メソッドを提供し、これで日付を比較することができます。
- compareTo()> 0:引数よりも未来
- compareTo()<0:引数よりも過去
- compareTo()== 0:引数と同じ時間
public void compareDate3() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdf.parse("2019-07-12");
Date date2 = sdf.parse("2019-11-01");
System.out.println(sdf.format(date1));
System.out.println(sdf.format(date2));
if (date1.compareTo(date2) > 0) {
System.out.println("Date1 is after Date2");
} else if(date1.compareTo(date2) < 0){
System.out.println("Date1 is before Date2");
} else {
System.out.println("Date1 is equal to Date2");
}
}
結果
2019-07-12
2019-11-01
Date1 is before Date2
Calendarの日付の比較
Calendarクラスは、次のメソッドを提供します。
- before():引数よりも過去のときにtrueが返さ
- after():引数よりも未来の時、trueが返さ
- equal():引数と同じ時間になるtrueが返さ
public void compareDate4() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdf.parse("2019-07-12");
Date date2 = sdf.parse("2019-11-01");
System.out.println(sdf.format(date1));
System.out.println(sdf.format(date2));
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(date1);
cal2.setTime(date2);
if(cal1.after(cal2)){
System.out.println("Date1 is after Date2");
}
if(cal1.before(cal2)){
System.out.println("Date1 is before Date2");
}
if(cal1.equals(cal2)){
System.out.println("Date1 is equal Date2");
}
}
結果
2019-07-12
2019-11-01
Date1 is before Date2
参考
Related Posts
- Java - AtomicReference使用方法
- Java - CountDownLatchを使用する方法、および例
- Java - ScheduledThreadPoolExecutor使用方法
- Java - SummaryStatisticsの使用方法(count、min、max、average)
- Java8 - 関数型インタフェース (Functional Interface) について
- Java - String配列をint配列に変換する
- Java - ArrayList要素の値を変更する方法、replaceAll()
- Java - 2つのリストが同じかどうかを比較
- Java - 配列から特定のIndex要素を削除する3つの方法
- Java - HashMapソート、4つの方法
- Java - 文字列を配列に変換する方法
- Java - ArrayListが空であることを確認する3つの方法
- Java - ArrayListの巡回、4つの方法
- Java - ArrayListの最大値、最小 値を見つける
- Java - ArrayListの合計、平均値の計算
- Java - HashMap巡回、3つの方法
- Java - do whileとwhileの違い
- Java - Lambda式と関数型インタフェース
- Java - List empty(null)チェック、3つの方法
- Java - ArrayListの初期化、4つの方法
- Java - Stream.reduce()の使い方と例
- Java - 2つのマップを結合する(merge、putAll)
- Java - java.util.Dateをjava.sql.Dateに変換する
- Java - ArrayListをStringに変換する
- Java - ClassNotFoundExceptionの発生原因と解決策
- Java - 非静的メソッドは静的コンテキストから参照できません
- Java - NoSuchMethodErrorの原因と解決策
- Java - JSONライブラリを使用する方法(JSONObject、JSONArray)
- Java - byte[]配列をFileに保存
- Java - byte[]の配列をStringに変換
- Java - ファイルのアクセス権を確認し、変更
- Java - 一時フォルダ(Temp directory)パスを取得する
- Javaでシェルスクリプトを実行
- Java - Streamを配列に変換する
- Java - リスト重複排除、2つの方法