DateFormatter를 이용해 날짜를 보기 쉽게 바꿔보자

sonny·2024년 9월 5일
0

iOS 파헤치기

목록 보기
7/12
post-thumbnail

DateFormatter

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 " 형식을 인식할 수 있게 포맷을 설정한다.

  • yyyy : 4자리 연도
  • MM : 2자리 월 (01~12)
  • dd : 2자리 일 (01~31)
    이 포맷을 통해 문자열 " 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)

이제 DateFormatterDate 객체를 M/d 형식으로 변환하는 부분이다. 즉 date9/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 ) 채팅리스트의 과정을 다 적어내지 못하더라도 중요해보이는 기능적인 부분에 대해 계속 써볼 것이다.

힘.. 내 소니 나 자신아

profile
iOS 좋아. swift 좋아.

0개의 댓글