이번에는 String 타입인 "2022년 10월 14일 오후 3:50" 날짜를 "1시간 전" 등의 상대적 시간으로 변환하는 작업을 합니다.
몇분 전, 몇시간 전 혹은 몇시간 후 같은 상대적인 시간은 RelativeDateTimeFormatter을 사용하면 쉽게 구할 수 있습니다.
var cleanDate: String {
let dateFormatter = DateFormatter()
dateFormatter.timeZone = TimeZone(identifier: "KST")
dateFormatter.locale = Locale(identifier: "ko_kr")
if date.count == 21 {
dateFormatter.dateFormat = "yyyy년 MM월 dd일 a h:mm"
} else {
dateFormatter.dateFormat = "yyyy년 MM월 dd일 a hh:mm"
}
guard let convertDate = dateFormatter.date(from: date) else { return date }
let formatter = RelativeDateTimeFormatter()
formatter.locale = Locale(identifier: "ko_kr")
formatter.unitsStyle = .short
formatter.dateTimeStyle = .numeric
return formatter.localizedString(for: convertDate, relativeTo: Date())
}
서버로 부터 받아온 데이터가 String 타입이기 때문에, Date 타입으로 변환한 후에 상대적인 시간을 구하고 String을 반환합니다.
이번 코드는 Model 파일 안에 적어주었는데, 따로 익스텐션으로 분리해서 작성한다면 date를 self로 바꿔주고 함수의 형식을 갖추면 될 것 같아요.
Model 파일 안에 작성해주었기 때문에 매우 간편하게 사용가능합니다.
Text(article.cleanDate)
"2022년 10월 14일 오전 11:00" 이었던 String 값이 "5시간 전" 으로 변환되어 보여지는 것을 확인할 수 있습니다.
참고 블로그:
참고 블로그:
'Project > SwiftUI 블록와이드' 카테고리의 다른 글
[SwiftUI Project] 뉴스기사 URL 공유 버튼 만들기 (0) | 2022.10.19 |
---|---|
[SwiftUI Project] 네트워크 모니터 추가하기 (유튜브 스타일) (2) | 2022.10.19 |
[SwiftUI Project] 예외처리: StatusCode에 따라서 안내글 띄우기 (0) | 2022.10.14 |
[SwiftUI Project] 예외처리: Json Data -> CoreData 백업하기 (0) | 2022.10.14 |
[SwiftUI Project] Skeleton Placeholder & Blink Animation 만들기 (0) | 2022.10.04 |
댓글