-
🐛 일 년의 마지막 주 선택 시 연도가 올라가는 문제 (YYYY vs yyyy)🧑💻/Swift 2020. 12. 21. 01:44반응형
💡 요약 미리 보기
yyyy를 쓰세요.
- YYYY : 주 기반 연도
- yyyy : 일반 달력 연도
⬇️ ⬇️ 자세히 보기 ⬇️ ⬇️
UIDatePicker에서 선택한 날짜를 UITextField에 연도-월-일로 출력하기 위해 다음과 같이 작업했습니다.
extension DateFormatter { func dateToString(_ date: Date) -> String { self.dateFormat = "YYYY-MM-dd" return string(from: date) } /* 날짜 형식 문자열 */ func getDatePickerDateValue() -> String { return dateFormatter.dateToString(datePicker.date) } // 2020년 12월 27일 선택 시 // datePicker.date = 2020-12-26 15:00:00 // dateFormatter.dateToString(datePicker.date) = 2021-12-27
그런데 2020년 12월 26일은 문제없이 출력되지만, 2020년 12월 27일 ~ 31일은 2021년으로 표시되는 문제가 발생했습니다.
놀라운건 2021년으로 표시되어있는데 캘린더에는 2020년 12월 27일로 잘 들어가(?) 있었어요.
처음엔 locale 이나 timezone 설정을 안해줘서 그런가 싶었는데
찾아보니 YYYY 가 아닌 yyyy 를 써야했습니다.
- YYYY : 주 기반 연도
- yyyy : 일반 달력 연도
extension DateFormatter { func dateToString(_ date: Date) -> String { self.dateFormat = "yyyy-MM-dd" return string(from: date) } /* 날짜 형식 문자열 */ func getDatePickerDateValue() -> String { return dateFormatter.dateToString(datePicker.date) } // 2020년 12월 27일 선택 시 // datePicker.date = 2020-12-26 15:00:00 // dateFormatter.dateToString(datePicker.date) = 2020-12-27
아래 내용을 참고했습니다.
stackoverflow.com/questions/15133549/difference-between-yyyy-and-yyyy-in-nsdateformatter
반응형