완료 방송 상대 시간 표시

최근 종료 방송 카드에 UTC 기준 상대 시간 문자열을 표시한다.
This commit is contained in:
Yu Sung
2025-12-19 23:52:43 +09:00
parent 7307e5b255
commit dd51a3fc2e
5 changed files with 111 additions and 56 deletions

View File

@@ -5,9 +5,53 @@
// Created by klaus on 7/22/25.
//
import Foundation
struct GetLatestFinishedLiveResponse: Decodable {
let memberId: Int
let nickname: String
let profileImageUrl: String
let timeAgo: String
let dateUtc: String
}
// MARK: -
extension GetLatestFinishedLiveResponse {
/// `dateUtc`(UTC )
/// ( ///// ) .
/// , `date` .
func relativeTimeText(now: Date = Date()) -> String {
guard let createdAt = DateParser.parse(dateUtc) else {
return timeAgo
}
let nowDate = now
let interval = max(0, nowDate.timeIntervalSince(createdAt))
// / (/ )
let calendar = Calendar.current
let ym = calendar.dateComponents([.year, .month],
from: createdAt,
to: nowDate)
if let years = ym.year, years >= 1 {
return I18n.Time.yearsAgo(years)
}
if let months = ym.month, months >= 1 {
return I18n.Time.monthsAgo(months)
}
// //
if interval < 60 {
return I18n.Time.justNow
} else if interval < 3600 {
let minutes = Int(interval / 60)
return I18n.Time.minutesAgo(max(1, minutes))
} else if interval < 86_400 {
let hours = Int(interval / 3600)
return I18n.Time.hoursAgo(max(1, hours))
} else {
let days = Int(interval / 86_400)
return I18n.Time.daysAgo(max(1, days))
}
}
}