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

Swift에서 두 개의 NSDate 비교하는 방법 완벽 정리

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")
}

위 코드를 실행하면 콘솔에 비교 결과가 출력됩니다.

Swift에서 두 개의 NSDate 비교하는 방법 완벽 정리

비교 결과의 세 가지 유형

compare(_:) 메서드는 두 날짜의 관계에 따라 다음 세 가지 결과 중 하나를 반환합니다.

  • orderedAscending: 수신자(비교 주체)가 인수로 전달된 날짜보다 이전일 때
  • orderedDescending: 수신자가 인수로 전달된 날짜보다 이후일 때
  • orderedSame: 두 날짜가 동일할 때

이처럼 compare 메서드를 활용하면 별도의 연산 없이 간결하고 안전하게 날짜 간 선후 관계를 확인할 수 있습니다. 참고로 최신 Swift 코드에서는 Date 타입과 Calendar 구조체를 사용하는 것이 권장되며, 비교 연산자(<, >, ==)로도 직접 비교가 가능합니다.