Class -> NSDate, NSCalendar, NSDateComponents, NSTimeZone, NSLocale
Structure -> Date, Calendar, DateComponents, TimeZone, Locale
as 연산자로 타입캐스팅 할 수 있다.
let now = Date() // 현재 날짜와 시간이 저장된 인스턴스가 생성됩니다.
기준 일자
UTC TimeZone에서 2001.1.1. 00:00:00을 나타냅니다.
여기에 숫자를 더하면 이후 날짜를 얻을 수 있고, 빼면 이전 날짜를 얻을 수 있습니다.
Date(timeIntervalSinceReferenceDate: 60 * 60) // Reference Date 시간의 1시간 후
Date(timeIntervalSinceReferenceDate: -60 * 60) // Reference Date 시간의 1시간 전
날짜와 시간은 TimeInterval 단위로 처리합니다.
초 단위의 값을 저장합니다. 1.0이 1초
let oneSec = TimeInterval(1)
let oneMin = TimeInterval(60)
let oneHour = TimeInterval(oneMin * 60)
let oneDay = TimeInterval(oneHour * 24)
// 원하는 날짜와 시간을 설정할 수 있음.
let after24Hours = Date(timeIntervalSinceNow: oneDay)
let calendar = Calendar.autoupdatingCurrent
var components = DateComponents()
components.year = 2014
components.month = 4
components.day = 16
let date = calendar.date(from: components)
let calendar = Calendar.current
let now = Date()
let componets = calendar.dateComponents([.year, .month, .day], from: now)
componets.year
componets.month
componets.day
let year = calendar.component(.year, from: now)
let startDate = calendar.date(from: componets)
let days = calendar.dateComponents([.day], from: startDate!, to: now).day
let calendar = Calendar.current
var components = DateComponents()
components.day = 123
let date = calendar.date(byAdding: components, to: Date())
우리나라에서 사용하는 TimeZone의 이름은 Korean Standard Time / KST
UTC + 09:00, Asia/Seoul
let calendar = Calendar.current
var components = DateComponents()
components.year = 2021
components.month = 1
components.day = 21
components.timeZone = TimeZone(identifier: "Asia/Seoul")
let date = calendar.date(from: components)