Java - 時間(Time)、日付(Date)比較する方法

Javaでの時間(Time)、日付(Date)比較する方法を紹介します。

  1. Java8でLocalDateTime、LocalDate、LocalTime、ZonedDateTimeが提供されます。

このAPIの日付/時刻を比較することができます。

  1. Java8以前に使用したDate、Calendarで日付/時刻を比較することができます。

Java8の日付/時刻APIの比較

LocalDateTime、LocalDate、LocalTime、ZonedDateTimeは次のメソッドを提供します。

  1. isBefore():引数よりも過去のときにtrueが返さ
  2. isAfter():引数よりも未来の時、trueが返さ
  3. 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クラスは、次のメソッドを提供します。

  1. before():引数よりも過去のときにtrueが返さ
  2. after():引数よりも未来の時、trueが返さ
  3. 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()メソッドを提供し、これで日付を比較することができます。

  1. compareTo()> 0:引数よりも未来
  2. compareTo()<0:引数よりも過去
  3. 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クラスは、次のメソッドを提供します。

  1. before():引数よりも過去のときにtrueが返さ
  2. after():引数よりも未来の時、trueが返さ
  3. 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

codechachaCopyright ©2019 codechacha