Date and Calendar
Date() 자료형으로 인스턴스를 생성하면 현재 날짜와 시간을 알 수 있습니다.
그리고 Calendar.current를 사용해, 현재 사용하고 있는 달력을 확인할 수 있습니다.
let now = Date()
let calendar = Calendar.current // gregorian (current)
Calendar의 identifier 생성자를 사용한다면 Swift가 제공하는 다양한 달력을 사용할 수 있습니다.
let calendar = Calendar(identifier: .buddhist) // 불교달력
Component
component는 '구성 요소'라는 뜻입니다.
Calendar 타입에서 component 메소드를 사용하면 날짜를 구성하는 다양한 요소(년, 월, 일, 시간 등) 중 얻고싶은 '하나의 요소'를 정수형으로 리턴해줍니다.
func component(_ component: Calendar.Component, from date: Date) -> Int
component 파라미터엔 얻고싶은 component를 전달하면 되고, 어떤 날짜로부터 얻을 것인지 Date 타입의 인스턴스를 전달해주면 됩니다.
let now = Date()
let calendar = Calendar.current
calendar.component(.year, from: now) // 2020
now의 .year가 리턴이 됩니다.
component에는 년, 월, 일 뿐만아니라 시간, 분 등 다양한 요소가 있습니다.
애플 문서를 확인하면 다양한 요소를 확인할 수 있습니다.
Calendar.Component 링크
extension Date
extension Date {
var year: Int {
let cal = Calendar.current
return cal.component(.year, from: self)
}
}
let now = Date()
now.year
방금 구현했던 코드를 extension으로 확장해 코드의 가독성이 올라갔습니다.
특정 인스턴스가 아닌, Date 타입 전체에 사용하기 위해 component 메소드 from 파라미터에 self를 전달했습니다.