DateFormatter
는 , 날짜와 시간을 사람이 읽을 수 있는 형식으로 변환 반대로 특정 형식의 문자열을 날짜와 시간 객체로 변환하는 데 사용하는 도구이다. 예를 들어, 2024-09-05
같은 날짜를 2024년 9월 5일
처럼 변환할 수 있다.
간단하게 말하면:
이 과정을 쉽게 해주는 것이 DateFormatter
의 역할인 것이다.
코드를 통해 간단히 예를 들어보자.
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy년 MM월 dd일"
let now = Date()
let dateString = dateFormatter.string(from: now)
print(dateString) // 예: 2024년 09월 05일
위 코드에서 Date()
는 현재 시간을 나타내고, DateFormatter
를 이용해 원하는 형식으로 변환해주는 것이다.
만약 원하는 스타일이 년도가 빠진 9/5
일 경우 어떻게 할까
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "M/d"
let dateString = "2024-09-04"
let dateFormatterInput = DateFormatter()
dateFormatterInput.dateFormat = "yyyy-MM-dd"
if let date = dateFormatterInput.date(from: dateString) {
let formattedDate = dateFormatter.string(from: date)
print(formattedDate) // 출력: 9/4
}
하나씩 해석해보자.
let dateFormatter = DateFormatter()
ateFormatter
객체를 생성하는 코드인데, 이 객체를 사용해서 날짜를 원하는 형식으로 변환할 수 있다.
dateFormatter.dateFormat = "M/d"
ateFormatter
날짜를 M/d
형식으로 변환하도록 설정하는 부분.
M
: 월을 나타냄 (앞에 0을 붙이지 않음, 9월은 9
로 표시)
d
: 일을 나타냄 (앞에 0을 붙이지 않음, 4일은 4
로 표시)
이걸 통해 날짜를 9/4
처럼 표현할 수 있다.
let dateString = "2024-09-04"
변환하려는 날짜를 문자열로 지정하는 부분. 여기서는 " 2024-09-04 "라는 날짜를 문자열로 표현했다.
let dateFormatterInput = DateFormatter()
날짜 문자열을 Date 객체로 변환하기 위해 새로운 DateFormatter 객체를 만든다. 이걸 사용해서 " 2024-09-04 " 같은 형식의 문자열을 Date로 바꿔주는 것이다.
dateFormatterInput.dateFormat = "yyyy-MM-dd"
여기서 dateFormatterInput이 " 2024-09-04 " 형식을 인식할 수 있게 포맷을 설정한다.
if let date = dateFormatterInput.date(from: dateString)
이 부분은 2024-09-04
문자열을 Date
객체로 변환하는 코드이다.
dateFormatterInput.date(from: dateString)
은 2024-09-04
문자열을 실제 날짜(Date) 객체로 변환하는 메서드인데, if let
구문은 변환에 성공했을 때만 그 다음 코드가 실행되도록 하는 방식이라 즉, 변환에 실패하면 nil
이 반환되고, 성공하면 date
변수에 Date
객체가 들어가는 것이다.
let formattedDate = dateFormatter.string(from: date)
이제 DateFormatter
로 Date
객체를 M/d
형식으로 변환하는 부분이다. 즉 date
를 9/4
"로 변환해주는 것이다.
print(formattedDate) // 출력: 9/4
최종적으로 변환된 날짜를 출력하는 코드의 결과는 9/4
가 된다.
func formattedDateString(dateString: String) -> String {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd" // 입력 문자열 형식 설정
if let date = formatter.date(from: dateString) {
formatter.dateFormat = "M/d" // 출력 형식 설정
return formatter.string(from: date) // 변환된 문자열 반환
} else {
return "" // 변환 실패 시 빈 문자열 반환
}
}
let result = formattedDateString(dateString: "2024-09-04")
print(result) // 출력: 9/4
입력 형식은 먼저 yyyy-MM-dd
형식의 문자열을 Date 객체
로 변환 시켜주고 출력 형식은 그 후, Date 객체
를 다시 M/d
형식으로 변환해 준다.
예외 처리의 경우 변환에 실패하면 빈 문자열 " "
을 반환한다.
그리고 채팅리스트의 cell
부분을 수정하다가 뭐가 잘못된 것인지 코드 입력을 해도 반응이 없다.. 눈물난다. 이유를 모르니 처음부터 다시 기억을 더듬어 만들어냈고 강의를 들으며 부랴부랴 만들다보니 거진 막바지가 되었는데 ( 막바지 부분 내용이 너무 많았다 T,.T ) 채팅리스트의 과정을 다 적어내지 못하더라도 중요해보이는 기능적인 부분에 대해 계속 써볼 것이다.
힘.. 내 소니 나 자신아