지금 하고 있는 사이드 프로젝트에서 시간 정보를 받아올 때 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
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 에도 발행되어 있습니다.
'💻 Programming 개발 > 🍎 iOS 개발, Swift' 카테고리의 다른 글
2편 - iOS 앱을 2개 출시하고 나서 돌아본 10개월간의 iOS 개발 공부 방법(2022) - 새싹 부트캠프, 개인앱 출시, 연합동아리 UMC, 사이드프로젝트, 코딩테스트, 부트캠프 소개 (1) | 2023.07.31 |
---|---|
1편 - iOS 앱을 2개 출시하고 나서 돌아본 10개월간의 iOS 개발 공부 방법(2022) - 독학, 개인프로젝트, 책 추천 (9) | 2023.07.31 |
Moya 간단 사용법 - Request sample부터 실제 뷰컨트롤러에서 사용까지 (0) | 2023.02.23 |
defer가 호출되는 순서 / defer가 호출되지 않는 경우 (0) | 2023.02.15 |
[WWDC 2022] Embrace Swift Generics (0) | 2023.02.14 |
댓글