Files
sodalive-ios/SodaLive/Sources/Live/GetLatestFinishedLiveResponse.swift
Yu Sung dd51a3fc2e 완료 방송 상대 시간 표시
최근 종료 방송 카드에 UTC 기준 상대 시간 문자열을 표시한다.
2025-12-19 23:52:43 +09:00

58 lines
1.8 KiB
Swift

//
// GetLatestFinishedLiveResponse.swift
// SodaLive
//
// 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))
}
}
}