일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 프로세스 스케줄링
- decode
- 앨런
- UserDefaults
- Linked List
- 동기화
- scrollview
- 알고리즘
- struct
- 비동기
- 인프런
- 100 days of SwiftUI
- deadlock
- Codable
- IOS
- core data
- 오브젝트
- 가상 메모리
- Swift
- Apple Developer Academy
- SwiftUI
- async
- 데드락
- 운영체제
- 상호배제
- COLOR
- forEach
- 동시성
- @state
- Algorithm
Archives
- Today
- Total
기어가더라도 제대로
[SwiftUI-기초] Date, DateComponents 본문
- 달력 개념을 직접 구현하기는 어렵고 힘들다.
- Apple 구현해 놓은 달력을 쓰기만 하면 된다.(물론 가져다 쓰는 것도 쉽진 않다.)
- 그래서 Apple 이 만들어 놓은 달력 이용 api - Date, DateComponents 를 정리해볼까 한다.
조금 투박하게 내일을 구하는 방법
let now = Date.now
let tomorrow = Date.now.addingTimeInterval(86400)
let range = now...tomorrow
- 86400 은 하루의 시간초이다.
- 우리는 모든 날에 대해서 이런 계산을 거칠 수는 없다.
- 번거롭기도 하고.. 좀더 깔끔한 방법이 있진 않을까?
특정 요소 쓰기
var components = DateComponents()
components.hour = 8
components.minute = 0
let date = Calendar.current.date(from: components)
- DateComponents 라는 것을 친히 마련해주셨다.
- DateComponents 객체 생성
- 그 객체의 프로퍼티를 설정
- DateCompoenents를 바탕으로 원하는 Date 를 만들어내기
- 일정한 순서를 따른다.
- 이 때, 컴포넌트에 어떤 값을 넣는지는 본인의 마음이다.
- component에 규격 외 값을 넣는 경우가 있어서 에러를 뱉을 가능성이 있다.
" ?? Date.now " 를 해주는 것이 옵셔널 값을 벗기기에 수월하다.
let date = Calendar.current.date(from: components) ?? Date.now
특정 요소 읽기
let components = Calendar.current.dateComponents([.hour, .minute], from: someDate)
let hour = components.hour ?? 0
let minute = components.minute ?? 0
- 예를들어 우리가 DatePicker 를 이용해서 얻은 정보에서 hour, minute 값만 빼낸다면 이렇게 설정할 수 있다.
- 마찬가지로 요소에서 error 가능성이 존재하기 때문에 nil coalescing 하는 것이 좋다.
Text 에 표시
// 시간, 분 표시
Text(Date.now, format: .dateTime.hour().minute())
// 날, 월, 년
Text(Date.now, format: .dateTime.day().month().year())
- 영미권에선 좀 다른 순서로 표시하는데, 사용자 지역의 선호로 보여준다고한다.
- day - month - year
- month - day - year
- 여도 우리나라에선 year - month - day ??..
Text(Date.now.formatted(date: .long, time: .shortened))
- 이런 방법도 있다.
다양한 방법들이 있는데 모든 방법을 숙지하긴 어렵고, 이 정도 기본을 숙지한 후에, 필요하면 그 때 학습을 하는 것이 좋겠다.
'SwiftUI - 기초' 카테고리의 다른 글
[SwiftUI-기초] Bundle 에서 Data 가져오기 (0) | 2022.10.23 |
---|---|
[SwiftUI-기초] List - style, color (0) | 2022.10.22 |
[SwiftUI-기초] DatePicker (1) | 2022.10.18 |
[SwiftUI-기초] Stepper (0) | 2022.10.17 |
[SwiftUI-기초] Custom Container (1) | 2022.10.16 |
Comments