🧑‍💻/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

 

Difference between 'YYYY' and 'yyyy' in NSDateFormatter

What is exact difference between 'YYYY' and 'yyyy'. I read in this link, it states that A common mistake is to use YYYY. yyyy specifies the calendar year whereas YYYY specifies the year (of “...

stackoverflow.com

 

반응형