[iOS] DateFormat

린다·2021년 10월 11일
1

Learning iOS

목록 보기
3/13
post-thumbnail

DateFormat

주로 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년"이라고 작성하면 된다.

  • Date To String
    원하는 date format을 설정하고 메서드를 활용하여 string으로 변환
  • String To Date
    1) 현재 문자열이 어떤 format으로 돼있는지 파악 후
    2) 이에 맞게 date format을 구성한다
    3) 그 후 메서드를 활용하여 date로 변환

카카오톡의 오전 10:20의 경우,

let format = DateFormatter()
format.locale = Locale(identifier: "ko_KR")
format.dateFormat = "a h:mm"

let value = format.string(from: date)

이런식으로 구성하지않았을까...!

0개의 댓글