Date
- Mac OS 기준 설정된 위치에 맞추어 날짜 출력됨
- 콘솔에는 UTC 시간이 출력됨
- 실제 인스턴스 내부에는 기준이 되는 날짜로부터 몇 초가 지났는지 실수값으로 저장되어있다.
Reference Date
: 기준이 되는 날짜, Apple Epoch, Cocoa Epoch
라고도 함.
- 2001.1.1 00:00:00
Reference Date
- 초 단위이기 때문에 60*60을 하면 1시간이다.
- 한국은 시차가 9시간이기 때문에 10:00AM으로 출력된다.
Time Interval
- Swift에서 시간을 다룰 때에 기준은 TimeInterval이며, 단위는 초이다.
- Double타입으로 1보다 작은 값도 가능하므로, 1ms는
TimeInterval(0.001)
이다.
하루 다음 날짜 구하기
Date(timeIntervalSinceNow: TimeInterval(60*60*24))
- timeIntervalSinceNow를 통해 현재 시간으로부터 특정시간 뒤를 구할 때 사용한다.
현재 날짜와 시간
Date()
다른 플랫폼과의 호환성을 위한 생성자
Date(timeIntervalSince1970: TimeInterval(60*60*24))
- 다른 플랫폼은 2001.1.1 기준이 아닌 1970 기준이므로 이 생성자를 사용하면 호환성을 높일 수 있다.
Unix Epoch
: 1970.1.1 00:00:00
기준이 되는 날짜를 직접 지정
Date(timeInterval: TimeInterval(60*60*24), since: )
Calendar
Calendar.Identifier
사용자가 설정한 캘린더 가져오기
Calendar.current
Calendar.autoupdatingCurrent
- 두 속성 모두 언어 및 지역에 설정해 둔 캘린더를 가져온다.
- 보통 달력을 읽어온 뒤 계산하여 리턴하기 때문에 위쪽을 주로 씀
DateComponents
- 날짜는 다양한 컴포넌트로 구성되어 있음
Datecomponents
구조체로 구현되어 있음
- 바로
Date.now.year
같이 접근 불가능하고 Calendar의 도움을 받아 접근할 수 있음.
let calendar = Calendar.current
let components = calendar.dateComponents(components: Set<Calendar.Component>, from: Date)
원하는 날짜 만들기
- TimeInterval은 초 단위이기 때문에 특정 날짜를 만드는데 적합하지 않다.
- 일단 DateComponents를 원하는 값으로 채우고 Calendar가 제공하는 메소드를 사용해서 새로운 Date를 만든다.
- 시간은 설정하지 않았기 때문에 00:00이 된다.
날짜 계산
byAdding
: 더할 날짜
to
: 기준 날짜
특정일로부터 지난 날짜 확인