스위프트에서 날짜 변환 작업시 주의해야할 점

준우·2024년 1월 18일
1

Swift 이야기

목록 보기
4/19
post-thumbnail

닐찌 변환 작업시, 연도의 대문자 Y 와 소문자 y 는 무슨 차이점이 있을까?

안녕하세요, 우리는 일반적으로 DateFormatter() 를 사용할 때, 간과하는 문제점을 살펴 보려고 합니다.

일단 먼저, 우리가 일반적으로 쓰는 상황을 한 번 보겠습니다.

우리가 일반적으로 쓰는 코드

흔히, 아래에 있는 코드처럼 사용하시는 분들도 많으실 겁니다.

대문자 Y 와 소문자 y 는 둘 다 연도를 표시하는데, 어떤 차이점이 존재하지? 라는 생각을 하신 분들이 계실 겁니다.

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd/MM/YYYY"

대문자 Y 와 소문자 y 는 둘 다 연도를 표시하는데, 어떤 차이점이 존재하지?

YYYY 와 yyyy 는 일반적인 상황에서는 문제가 발생하지 않습니다. 그러나, 연도의 시작이 주의 중간에 있을 때 (예: 2022년의 마지막 주가 2023년의 첫 몇 일을 포함하는 경우), YYYY는 이전 연도(2022)를 반환할 수 있습니다. - - > 이게 핵심입니다.

그럼 먼저 대문자 YYYY 와 소문자 YYYY 가 어떤 친구들인지 한 번 확인 해보도록 합시다.

대문자 YYYY 란?

ISO 주 기반 연도를 나타냅니다. 주 기반 연도는 해당 날짜가 속한 주가 더 많이 포함된 연도를 기준으로 합니다. 예를 들어, 한 해의 첫 번째 일이 목요일이고 해당 주의 대부분이 이전 해에 속한다면, YYYY는 이전 해를 반환할 수 있습니다.

소문자 yyyy 란?

달력 연도(Calendar year)를 나타냅니다. 예를 들어, "2023-01-01"은 2023년으로 표시됩니다.

무슨 문제를 불러일으키는가?

앞서 말씀드렸다 싶이, 일반적인 상황에서 두 대/소문자는 문제가 없습니다. 하지만, 새해가 시작되는 날에는 다른 결과가 발생할 수 도 있습니다. 더더욱 끔찍한 것은 그 문제를 새해가 되기 전까지 최소 몇달은 모를수도 있다는 점입니다.(어쩌면 영영 모를지도...?)

0개의 댓글