Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 날짜 비교하기: compareTo()와 equals() 메서드 완벽 가이드

Java에서 두 날짜를 비교하려면 compareTo() 메서드를 사용합니다. 이 메서드는 두 날짜의 선후 관계를 판단할 때 매우 유용하며, 기본 문법은 다음과 같습니다.

public int compareTo(Date anotherDate)

여기서 anotherDate는 현재 Date 객체와 비교할 대상 날짜입니다. 반환값은 다음과 같이 해석할 수 있습니다.

  • 0 : 인수로 전달된 Date가 현재 Date와 동일한 경우
  • 0보다 작은 값 : 현재 Date가 인수의 Date보다 이전인 경우
  • 0보다 큰 값 : 현재 Date가 인수의 Date보다 이후인 경우

compareTo()를 활용한 날짜 비교 예제

아래 예제에서는 두 개의 날짜 객체를 생성하고, 세 가지 방식으로 비교하여 결과를 확인해 보겠습니다.

import java.util.*;
public class Demo {
    public static void main(String[] args) {
        // 두 개의 날짜 생성
        Date date = new Date(19, 3, 25);
        Date date2 = new Date(19, 9, 12);
        // 세 가지 방식으로 비교 수행
        int comparison = date.compareTo(date2);
        int comparison2 = date2.compareTo(date);
        int comparison3 = date.compareTo(date);
        // 결과 출력
        System.out.println("Comparison Result:" + comparison);
        System.out.println("Comparison2 Result:" + comparison2);
        System.out.println("Comparison3 Result:" + comparison3);
    }
}

실행 결과

Comparison Result:-1
Comparison2 Result:1
Comparison3 Result:0

실행 결과를 보면 첫 번째 비교에서는 -1이 반환되어 앞선 날짜가 더 이전임을 알 수 있고, 반대로 비교하면 1이 반환됩니다. 같은 객체끼리 비교했을 때는 당연히 0이 출력됩니다.

equals() 메서드로 날짜 동일 여부 확인하기

날짜의 선후 관계가 아니라 단순히 두 날짜가 같은지 여부만 확인하고 싶다면 equals() 메서드를 사용하는 것이 더 간편합니다. 이 메서드는 밀리초 단위의 차이를 기준으로 두 날짜의 동일성을 판단합니다.

import java.util.*;
public class Demo {
    public static void main(String[] args) {
        Date date = new Date(70, 1, 10);
        Date date2 = new Date(70, 1, 10);
        boolean check = date.equals(date2);
        System.out.println("Dates are equal:" + check);
    }
}

실행 결과

Dates are equal:true

위 예제처럼 연도, 월, 일이 완전히 동일한 두 날짜 객체를 equals()로 비교하면 true가 반환됩니다. 참고로 Java 8 이상 환경에서는 레거시 Date 클래스보다 스레드에 안전하고 직관적인 LocalDate, LocalDateTime 등의 java.time API를 사용하는 것이 권장됩니다.