728x90
반응형
노션으로 보기
🗳 오늘은 FSCalendar를 공부하기 위해서
DateFormatter를 먼저 공부해보려고 해요!
DateFormatter는 날짜의 형식을 바꿔줄 때 사용합니다.
그러니까 날짜를 어떻게 보여줄 건지를 정하고 싶을 때 사용해요!
그럼 한 번 어떻게 쓰는지 알아볼까요?
우선 현재 날짜 및 시간을 출력해주기 위해서 아래와 같은 코드가 필요합니다.
let now = Date()
→ Date() 자료형에 맞는 인스턴스를 생성해 현재 날짜와 시간을 알 수 있는데 Date에는 다양한 이니셜라이저가 있어요.
< Date의 이니셜라이저들 >
하나하나 차례대로 살펴보면,,,
1 ) init(timeIntervalSinceNow: TimeInterval)
→ 현재 시간을 기준으로 TimeInterval 만큼 후의 날짜와 시간
→ 여기서 TimeInterval은 초를 의미합니다. = A number of seconds.
- 하루는 60 * 60 * 24 = 86400 초로 구성되어 있어서 TimeInterval에 86400을 적어줍니다.
let date = Date(timeIntervalSinceNow: 86400)
// 지금 시간이 2021-06-24 06:31:07 인 경우
print(date) // 2021-06-25 06:31:07 +0000
2 ) init(timeIntervalSinceReferenceDate: TimeInterval)
→ 2001년 1월 1일 00:00 기준으로 TimeInterval 만큼 후의 날짜와 시간
let date = Date(timeIntervalSinceReferenceDate: 86400)
print(date) // 2001-01-02 00:00:00 +0000
3 ) init(timeIntervalSince1970: TimeInterval)
→ 1970년 1월 1일 00:00 UTC 기준으로 TimeInterval 만큼 후의 날짜와 시간
let date = Date(timeIntervalSince1970: 86400)
print(date) // 1970-01-02 00:00:00 +0000
4 ) init(timeInterval: TimeInterval, since: Date)
→ 지정해준 날짜를 기준으로 TimeInterval 만큼 후의 날짜와 시간
let date = Date(timeInterval: 86400, since: Date(timeIntervalSinceNow: 86400))
// 지금 시간이 2021-06-24 07:16:54 일 경우 이틀 후의 시간을 출력
print(date) // 2021-06-26 07:16:54 +0000
1️⃣ 현재 날짜와 시간을 위해 인스턴스를 하나 생성하고
let now = Date()
2️⃣ date를 보여주기 위해서 DateFormatter 인스턴스를 하나 생성해줍니다!
let dateFormatter : DateFormatter = {
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "ko_KR")
formatter.dateStyle = .medium // 날짜 형식
formatter.timeStyle = .full // 시간 형식
return formatter
}()
- formatter.locale = Locale(identifier: "ko_KR")
→ 이 부분은 어느 나라 형식으로 날짜와 시간을 보여줄 지를 결정합니다
예를 들어,,,
- jp_JP로 identifier를 적어주면 [ 2021/06/24 14時51分06秒 韓国標準時 ] 이렇게 출력이 됩니다.
- en_US로 적어주면 [ Jun 24, 2021 at 4:27:02 PM Korean Standard Time ] 로 출력이 됩니다
- dateStyle : 날짜 형식
- timeStyle : 시간 형식
🧐 단순 호기심으로 하나하나 출력해봤어요.. 무슨 차이인지
- dateStyle : .full 인 경우 → 2021년 6월 24일 목요일
- dateStyle : .long 인 경우 → 2021년 6월 24일
- dateStyle : .medium 인 경우 → 2021. 6. 24.
- dateStyle : .short 인 경우 → 2021. 6. 24.
- timeStyle : .full 인 경우 → 오후 4시 28분 39초 대한민국 표준시
- timeStyle : .long 인 경우 → 오후 4시 29분 39초 GMT+9
- timeStyle : .medium 인 경우 → 오후 4:29:39
- timeStyle : .short 인 경우 → 오후 4:29
3️⃣ 원하는 형식으로 날짜 형식 변환하기
dateFormat을 통해서 원하는 형식을 문자열로 작성해주면 됩니다.
- 년도는 yyyy / 월은 MM / 일은 dd 로 적어줘야 해요.
→ mm 이라고 썼더니 이상하게 출력이 된다는....
- 요일은 EEEE (목요일) / E (목)
- 시간은 HH:mm:ss (24시간을 기준으로 출력) / hh:mm:ss (12시간을 기준으로 출력)
formatter.dateFormat = "yyyy-MM-dd" // 2021-06-24
formatter.dateFormat = "yyyy-MM-dd-EEEE, HH:mm:ss" // 2021-06-24-목요일, 17:30:05
formatter.dateFormat = "yyyy-MM-dd-E, hh:mm:ss" // 2021-06-24-목, 05:06:12
🗳 위 사진의 출처 링크 - 여기를 누르세요
🗳 DateComponents를 통해서 원하는 요소만 선택해서 인스턴스를 생성할 수도 있어요!
let myBirthday = DateComponents(year: 1998, month: 02, day: 02)
DateComponents는 모든 값이 다 옵셔널 형태이기 때문에 원하는 부분에만 값을 줘도 됩니다!
728x90
반응형
'⭐️ 개발 > iOS & Swift' 카테고리의 다른 글
[iOS] TextView - 플레이스홀더, 패딩, 글자 수 제한, 커서, 키보드 dismiss (0) | 2021.07.22 |
---|---|
[iOS] Alamofire Multipart/formdata를 통한 이미지 서버 통신 (3) | 2021.07.19 |
[iOS] Expandable TableView Cell 만들기 (6) | 2021.06.16 |
[iOS] UIColor Extension 파일 만드는 법 (feat.Zeplin) (1) | 2021.06.07 |
[iOS] NSMutableAttributedString : 문자열 특정 부분 색 바꿔주고 싶을 때 (0) | 2021.06.07 |