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

iOS에서 두 날짜의 차이를 계산하는 방법 (DateFormatter & Calendar 활용)

두 날짜 사이의 차이를 구하는 것은 생각보다 어렵지 않습니다. 다만 날짜 객체를 어떻게 다루는지 이해하고 있어야 합니다.

이 글에서는 Swift의 DateFormatter 클래스와 Calendar 구조체를 활용해 두 날짜 간의 차이를 계산하는 방법을 알아보겠습니다.

DateFormatter란 무엇인가?

DateFormatterDate(NSDate) 객체를 사람이 읽을 수 있는 문자열로 변환하거나, 반대로 텍스트 형태의 날짜와 시간을 Date 객체로 변환해 주는 클래스입니다.

자세한 내용은 Apple 공식 문서를 참고하세요.
DateFormatter 공식 문서 바로가기

Calendar 구조체 활용하기

날짜 차이를 실제로 계산하는 역할은 Calendar 구조체가 담당합니다. Apple은 이에 대해서도 훌륭한 공식 문서를 제공하고 있습니다.
Calendar 공식 문서 바로가기

실전 예제 따라 하기

그럼 바로 시작해 보겠습니다.

  1. Xcode를 실행합니다.
  2. File → New → Playground를 선택해 새 플레이그라운드를 생성합니다.
  3. 아래 코드를 복사해서 붙여넣습니다.
import UIKit

// DateFormatter와 Calendar 객체 생성
let formatter = DateFormatter()
let calendar = Calendar.current

// 날짜 포맷 지정
formatter.dateFormat = "dd-MM-yyyy"

// 시작 날짜 지정
let startDate = formatter.date(from: "10-08-2018")

// 종료 날짜 지정
let endDate = formatter.date(from: "23-09-2019")

print(startDate!)
print(endDate!)

// 두 날짜 간의 일(day) 차이 계산
let diff = calendar.dateComponents([.day], from: startDate!, to: endDate!)

// 결과 출력
print(diff)

코드 살펴보기

  • DateFormatter 인스턴스를 생성하고 dateFormat 속성으로 "dd-MM-yyyy" 형식을 지정했습니다.
  • date(from:) 메서드를 사용해 문자열을 Date 객체로 변환했습니다.
  • calendar.dateComponents(_:from:to:) 메서드에 .day 컴포넌트를 전달하여 두 날짜 사이의 일수 차이를 구했습니다.

코드를 실행하면 콘솔에 두 날짜와 함께 일수 차이가 출력되는 것을 확인할 수 있습니다. 필요에 따라 [.day] 대신 [.year, .month, .day]처럼 여러 컴포넌트를 조합하면 연·월·일 단위의 차이도 한 번에 구할 수 있습니다.