Swift에서 두 개의 NSDate 비교하기
이 글에서는 Swift에서 두 개의 NSDate 객체를 비교하는 방법을 알아보겠습니다. 날짜를 비교하려면 먼저 비교 대상이 될 두 개의 날짜를 생성해야 합니다.
이번 예제는 시뮬레이터 대신 플레이그라운드(Playground)에서 진행하겠습니다.
1. 두 개의 날짜 생성하기
먼저 서로 다른 두 개의 날짜를 만들어 보겠습니다. NSDateComponents를 사용하면 연도, 월, 일을 지정해 원하는 날짜를 손쉽게 구성할 수 있습니다.
let dateOne = NSDateComponents() dateOne.day = 5 dateOne.month = 6 dateOne.year = 1993 let dateTwo = NSDateComponents() dateTwo.day = 4 dateTwo.month = 2 dateTwo.year = 1995
2. 날짜 컴포넌트를 NSDate로 변환하기
생성한 날짜 컴포넌트는 그 자체로는 날짜가 아니므로, 캘린더(NSCalendar)를 통해 실제 날짜 객체로 변환해야 합니다.
let cal = NSCalendar.current let firstDate = cal.date(from: dateOne as DateComponents) let secondDate = cal.date(from: dateTwo as DateComponents)
3. 조건문으로 날짜 비교하기
이제 compare(_:) 메서드와 if 조건문을 사용해 두 날짜의 선후 관계를 판단할 수 있습니다.
if secondDate!.compare(firstDate!) == .orderedAscending {
print("date 1 is bigger than date 2")
} else {
print("Date 2 is bigger")
}
위 코드를 실행하면 콘솔에 비교 결과가 출력됩니다.

비교 결과의 세 가지 유형
compare(_:) 메서드는 두 날짜의 관계에 따라 다음 세 가지 결과 중 하나를 반환합니다.
- orderedAscending: 수신자(비교 주체)가 인수로 전달된 날짜보다 이전일 때
- orderedDescending: 수신자가 인수로 전달된 날짜보다 이후일 때
- orderedSame: 두 날짜가 동일할 때
이처럼 compare 메서드를 활용하면 별도의 연산 없이 간결하고 안전하게 날짜 간 선후 관계를 확인할 수 있습니다. 참고로 최신 Swift 코드에서는 Date 타입과 Calendar 구조체를 사용하는 것이 권장되며, 비교 연산자(<, >, ==)로도 직접 비교가 가능합니다.