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

Swift에서 Date 객체 생성하는 3가지 방법 – Xcode 실전 가이드

Objective-C 배경을 가진 개발자라면 한 가지 좋은 소식이 있습니다. 더 이상 NSDate를 직접 사용할 필요가 없다는 점입니다. Swift는 자체 구조체(struct) 타입인 Date를 정의했으며, Date는 내부적으로 NSDate 클래스와 브리징되어 있어 Objective-C API와 상호작용하는 코드에서도 두 타입을 자유롭게 혼용할 수 있습니다.

Date에 대해 더 자세히 알고 싶다면 Apple 공식 문서(developer.apple.com/documentation/foundation/date)를 참고하세요.

이 글에서는 Swift에서 날짜 객체를 생성하는 세 가지 방법을 Playground를 통해 하나씩 살펴보겠습니다.

1. 현재 날짜와 시간(UTC) 가져오기

가장 간단한 방법은 Date() 객체를 생성하는 것입니다. 아래 코드를 Playground에 입력하고 실행해 보세요.

let currentDateAndTime = Date()
print(currentDateAndTime)

이 코드는 현재 시점의 UTC 기준 날짜와 시간을 반환합니다. 별도의 설정 없이 즉시 사용할 수 있는 가장 쉬운 방법입니다.

2. DateFormatter로 문자열을 날짜로 변환하기

두 번째 방법은 DateFormatter를 활용하는 것입니다. 문자열 형태의 날짜 데이터를 원하는 포맷의 Date 객체로 변환할 때 유용합니다.

let stringDate = "2019-10-10"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let date = dateFormatter.date(from: stringDate)
print(date ?? "")

dateFormat 속성에 원하는 패턴(예: "yyyy-MM-dd", "yyyy년 MM월 dd일" 등)을 지정하면 다양한 형식의 문자열을 손쉽게 변환할 수 있습니다. 변환에 실패하면 nil이 반환되므로 옵셔널 처리에 유의해야 합니다.

3. DateComponents로 날짜 조합하기

세 번째 방법은 DateComponents를 사용하는 것입니다. 연도, 월, 일, 시간, 분, 초, 심지어 타임존까지 직접 지정하여 정밀한 날짜 객체를 만들 수 있습니다.

var date = DateComponents()
date.year = 2019
date.month = 12
date.day = 12
date.timeZone = TimeZone(abbreviation: "IST")
date.hour = 12
date.minute = 34
date.second = 55

let userCalendar = Calendar.current
let dateAndTime = userCalendar.date(from: date)
print(dateAndTime ?? "")

Calendar.current.date(from:) 메서드에 DateComponents를 전달하면 지정된 값들로 구성된 Date 객체가 생성됩니다. 특정 시점의 날짜를 코드로 명확하게 표현해야 할 때 특히 유용합니다.

마무리

정리하면, Swift에서 Date 객체를 생성하는 대표적인 방법은 다음과 같습니다.

  • Date(): 현재 날짜와 시간이 필요할 때
  • DateFormatter: 문자열을 날짜로 변환할 때
  • DateComponents + Calendar: 연·월·일·시·분·초를 직접 지정할 때

상황에 맞는 방법을 선택하면 날짜 관련 로직을 훨씬 깔끔하게 작성할 수 있습니다.