주로 DatePicker를 사용하여 선택한 날짜에 대한 정보를 사용하고 싶을 때 사용하게 된다.
DatePicker에서 선택한 날짜는 date 타입으로 바로 문자열로 사용할 수 없고 DateFormatter()
를 사용해서 변환해야한다. 마찬가지로 Date to String, String to Date 모두 변환 가능하다.
@IBAction func datePickerValueChanged(_ sender: UIDatePicker) {
let format = DateFormatter()
format.dateFormat = "yy년 MM월 dd일"
let value = format.string(from: sender.date)
}
Date를 String으로 변환하기 위해 format이라는 변수에 DateFormatter() 객체를 할당하고 dateFormat이라는 속성을 활용하는데 이때 dateFormat
을 활용하여 원하는 형식을 지정할 수 있다.
Format | 설명 | 예시 |
---|---|---|
y | 년도 그대로 표시 | 1 -> "1" 150 -> "150" 2020 -> "2020" |
yy | 년도의 두 뒤자리수 | 2020 -> "20" 2050 -> "50 |
yyy | 년도 (최소)세자리 | 5 -> "005" 2020 -> "2020" |
yyyy | 년도 (최소)네자리 | 2020 |
M | 월(0이 생략된) | 7, 11 |
MM | 월(두자리) | 07, 11 |
MMM | 약어로 표현(Locale에 따라 다름) | 7월, 11월 Jul, Nov |
MMMM | 월(전체적인 표현) | 7월, 11월 July, November |
d | 일(0이 생략된) | 5, 15 |
dd | 일(두자리) | 05, 15 |
E, EE, EEE | 요일의 약어(Locale에 따라 다름) | 금, Fri |
EEEE | 요일(전체적인 표현) | 금요일, Friday |
EEEEE | 요일을 한 글자로 표현 | 금, F |
EEEEEE | 요일을 두 글자로 표현 | 금, Fr |
a | 오전, 오후로 표현(Locale에 따라 다름) | 오전, 오후 AM, PM |
h | 시간(12시간 기준)(0 생략) | 3, 11 |
hh | 시간(12시간 기준)(두 자리) | 03, 11 |
H | 시간(24시간 기준)(0 생략) | 3, 23 |
HH | 시간(24시간 기준)(두 자리) | 03, 23 |
m | 분(0 생략) | 3, 10 |
mm | 분(두 자리) | 03, 10 |
locale: 오전/오후를 한글로 나타내고 싶은 경우에 한국으로 설정해줘야함 (ex. Locale(identifier: "ko_KR"), default는 영어)
dateFormat 안에 format에 해당하는 구성 요소를 제외하고는 일반 String으로 표기된다.
따라서 2021년
이라고 표기하고 싶다면 "yyyy년"
이라고 작성하면 된다.
카카오톡의 오전 10:20의 경우,
let format = DateFormatter()
format.locale = Locale(identifier: "ko_KR")
format.dateFormat = "a h:mm"
let value = format.string(from: date)
이런식으로 구성하지않았을까...!