본문 바로가기
💻 Programming 개발/🍎 iOS 개발, Swift

RelativeTimeFormatter로 상대시간 표기하기

by 킴디 kimdee 2023. 3. 7.
반응형

 

 

 

 

지금 하고 있는 사이드 프로젝트에서 시간 정보를 받아올 때 ISO8601 형태로 받아오는데, 이를 현재 날짜, 시간과 비교하여 상대시간으로 표기해야 했다.

 

보여주는 형태는 아래 형태대로 보여주고자 했다.

 

 지금, 5분 전, 3시간 전, 2일 전

 

Foundation 프레임워크에서 RelativeDateTimeFormatter 를 이용하여 상대시간으로 바꿔줄 수 있어서 이를 이용해 메서드를 선언하였다.

서버에서 문자열로 받아오기 때문에 문자열을 Date 포맷으로 변환하는 메서드를 String 에 extension 으로 선언해주고, 이렇게 바꾼 날짜를 Date extension 에서 상대시간으로 바꾸는 메서드를 정의하였다.

날짜 문자열을 Date 형태로 변환하기

// 문자열 -> 날짜
extension String {
    func toDate() -> Date {
        let dateFormater = DateFormatter()
        dateFormater.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
        guard let validDate = dateFormater.date(from: self) else { return Date() }
        
        return validDate
    }
}

 

현재 날짜 기준으로 상대시간 문자열 만들기

// 상대시간 계산하기
extension Date {
    /// 오늘 날짜를 기준으로 상대시간을 계산하여 문자열로 반환한다.
    /// - 예: 12시간 전, 10분 전
    func toRelativeString() -> String {
        let formatter = RelativeDateTimeFormatter()
        formatter.locale = Locale(identifier: "ko_KR")
        formatter.dateTimeStyle = .named
        formatter.unitsStyle = .short
        let dateToString = formatter.localizedString(for: self, relativeTo: .now)
        return dateToString
    }
}

 

사용방법

let writtenDate = "2023-03-05T15:08:43"
let relativeTimeFromNow = writtenDate.toString().toRelativeString()

 

참고링크

RelativeDateTimeFormatter | Apple Developer Documentation

 

RelativeDateTimeFormatter | Apple Developer Documentation

A formatter that creates locale-aware string representations of a relative date or time.

developer.apple.com

How to show a relative date and time using RelativeDateTimeFormatter - free Swift 5.4 example code and tips

 

How to show a relative date and time using RelativeDateTimeFormatter - free Swift 5.4 example code and tips

Was this page useful? Let us know! 1 2 3 4 5

www.hackingwithswift.com

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

 

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

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

zeddios.tistory.com

 


 

오늘도 읽어주셔서 감사합니다. 

 

궁금하거나 나누고 싶은 얘기가 있으시면 댓글로 알려주세요!

재밌게 읽으셨다면 공감과 구독은 큰 힘이 됩니다. 

 

항상 감사합니다.

 

이 글은 doy.oopy.io 에도 발행되어 있습니다. 

 

반응형

댓글