(프로젝트) – SwiftUI 날짜를 문자열로, DateFormatter

나는 오랫동안 글을 쓰지 않았습니다.

오늘은 개인 프로젝트를 진행하면서 발생한 문제에 대한 해결 방법을 포스팅하려고 합니다.

알잘까 좋아해서 본론으로 들어가겠습니다.

출시 날짜가 잘못 표시됨


화면에 표시되는 날짜

API에서 받은 문자열은 이렇게 출력되는데 Date()가 문자열로 출력되면 뭔가 잘못된 것이므로 DateFormat이 잘못된 것은 아닌지 확인한다.

하지만 육안으로 보기에는 큰 문제가 없어 보이지만…

func StringToDate(stringDate:String) -> Date{
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyy-mm-dd'T'hh:mm:ss"  //"2023-03-04T05:34:50"
        dateFormatter.locale = Locale(identifier: "ko_KR")
        dateFormatter.timeZone = TimeZone(abbreviation: "KST")
        //print(dateFormatter.date(from: stringDate)?.addingTimeInterval(32400) ?? Date())
        return dateFormatter.date(from: stringDate)?.addingTimeInterval(32400) ?? Date()
    }

여기

dateFormatter.dateFormat = "yyyy-mm-dd'T'hh:mm:ss"
//월 출력 부분이 대문자 MM이 아닌 mm으로 되어있음

무슨 멍청한 짓이냐며 대문자와 소문자를 구분한 이유를 생각하지 못했는데… 물론 그런 사소한 일이 전혀 다른 결과를 낳을 수 있다는 걸 몰랐기 때문에 부주의했다.

코드에서 part.addingTimeInterval(32400) ?? Date() 이 부분이 추가되는데 시간 자체는 UTC 기준이므로 출력하면 9시간 전이다.

피드를 보시면 상대적인 시간으로 작성되어 있어서 시간이 다른 것을 알 수 있습니다.

그래서 9시간을 추가해서 사용하기로 했습니다.