본문 바로가기
Project/SwiftUI 블록와이드

[SwiftUI Project] 몇시간 전, 몇일 전 상대적 시간 구하기 RelativeDateTimeFormatter

by iOS_woo 2022. 10. 14.

상대적 시간 구하기 예시

이번에는 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시간 전" 으로 변환되어 보여지는 것을 확인할 수 있습니다.

 

참고 블로그:

 

PlayGround) DateFormatter를 이용해서 날짜를 변경하자

안녕하세요 ㅎㅎㅎ 후르륵짭짭 입니다. 이번에는 DateFormatter에 대해서 배워보려고 합니다. 앱 개발을 할때, 굉장히 많이 사용하게 되는데요! 그럼 지금 알아보도록 하겠습니다. ** 현재시간을 원

hururuek-chapchap.tistory.com

참고 블로그: 

 

Relative Date Time Formatter / List Formatter 사용해보기

안녕하세요 :) Zedd입니다. 저번글 Ordered Collection Diffing를 쓰다가 Advances in Foundation를 다시 보게됐는데, 여기서 소개된 기능(?)이 정말 많아요! 아직 안보셨다면 꼭 보는걸 추천..!!! 암튼 그중 하..

zeddios.tistory.com

 

댓글