HOME > java > time

Java - 시간(Time), 날짜(Date) 비교하는 방법

By JS | 01 Nov 2019

자바에서 시간(Time), 날짜(Date) 비교하는 방법을 소개합니다.

  1. Java8에서 LocalDateTime, LocalDate, LocalTime, ZonedDateTime가 제공됩니다. 이 API에서 날짜/시간을 비교할 수 있습니다.

  2. 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

참고