🧑💻/Swift
🐛 일 년의 마지막 주 선택 시 연도가 올라가는 문제 (YYYY vs yyyy)
유리맥
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
반응형