본문 바로가기
Spring/Java

[ java ] 시간,날짜 비교

by snow_hong 2022. 3. 12.

자바에서 시간(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("2021-11-14T10:11:50.000");
    LocalDateTime date2 = LocalDateTime.parse("2021-12-20T15:20:31.000");

    if (date1.isBefore(date2)) { //date1이 date2보다 과거일 경우
        System.out.println("Date1 is before Date2");
    }

    if (date1.isAfter(date2)) { //date1보다 date2가 미래일 경우
        System.out.println("Date1 is after Date2");
    }

    if (date1.isEqual(date2)) { // date1 = date2 같은 시간일 경우
        System.out.println("Date1 is equal Date2");
    }
}

결과 - isBefore의 경우가 나옴

2021-11-14T10:11:50
2021-12-20T15:20:31
Date1 is before Date2

[ 1. Date의 날짜 비교 ]

Date 클래스는 다음 메소드를 제공합니다.

- before() : 인자보다 과거일 때 true가 리턴

- after() : 인자보다 미래일 때 true가 리턴

- equal() : 인자와 같은 시간일 때 true가 리턴

public void compareDate2() throws ParseException {

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date date1 = sdf.parse("2021-07-12");
    Date date2 = sdf.parse("2021-11-01");
    System.out.println(sdf.format(date1));
    System.out.println(sdf.format(date2));

    if(date1.after(date2)){ //date1이 미래일 경우
        System.out.println("Date1 is after Date2");
    }

    if(date1.before(date2)){ //date1이 과거일 경우
        System.out.println("Date1 is before Date2");
    }

    if(date1.equals(date2)){ //date1 = date2
        System.out.println("Date1 is equal Date2");
    }
}

결과

2021-07-12
2021-11-01
Date1 is before Date2

[ 2. 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("2021-07-12");
    Date date2 = sdf.parse("2021-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");
    }
}

결과

2021-07-12
2021-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("2021-07-12");
    Date date2 = sdf.parse("2021-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");
    }
}

결과

2021-07-12
2021-11-01
Date1 is before Date2

[ 참고 사이트 ]

https://codechacha.com/ko/java-compare-date-and-time/

728x90

댓글