// // TimeInterval+Extension.swift // Lanu // // Created by OneeChan on 2025/11/20. // import Foundation extension TimeInterval { // 辅助方法:格式化 "时:分"(补零,如 09:05) func formattedTime() -> String { Date(timeIntervalSince1970: self).formattedTime() } // 辅助方法:格式化 "星期一" func formattedWeek() -> String { Date(timeIntervalSince1970: self).formattedWeek() } // 辅助方法:格式化 "星期 时:分"(如 星期一 09:30) func formattedWeekWithTime() -> String { Date(timeIntervalSince1970: self).formattedWeekWithTime() } // 辅助方法:格式化 "月/日"(如 10/23) func formattedDate(_ separator: String = "/") -> String { Date(timeIntervalSince1970: self).formattedDate(separator) } // 辅助方法:格式化 "月/日 时:分"(如 10/23 14:30) func formattedDateWithTime(_ separator: String = "/") -> String { Date(timeIntervalSince1970: self).formattedDateWithTime(separator) } // 辅助方法:格式化 "年/月/日"(如 2025/10/23) func formattedFullDate(_ separator: String = "/", normal: Bool = false) -> String { Date(timeIntervalSince1970: self).formattedFullDate(separator, normal: normal) } // 辅助方法:格式化 "年/月/日 时:分"(如 2025/10/23 14:30) func formattedFullDateWithTime(_ separator: String = "/") -> String { Date(timeIntervalSince1970: self).formattedFullDateWithTime(separator) } } extension TimeInterval { var tencentIMTimeDesc: String { Date(timeIntervalSince1970: self).tencentIMTimeDesc } var relativeTimeText: String { guard curTime > self else { return .init(key: "A00352") } let diff = Int(curTime - self) if diff < 60 { return .init(key: "A00352") } let minute = diff / 60 if minute < 60 { return minute == 1 ? .init(key: "A00353", minute) : .init(key: "A00354", minute) } let hour = minute / 60 if hour < 24 { return hour == 1 ? .init(key: "A00355", hour) : .init(key: "A00356", hour) } let day = hour / 24 return day == 1 ? .init(key: "A00357", day) : .init(key: "A00358", day) } } extension TimeInterval { var inMinutes: Bool { curTime - self < 60 } var inHour: Bool { curTime - self < 3600 } var inDay: Bool { curTime - self < 3600 * 24 } var isSameDay: Bool { Calendar.current.isDate(Date(), inSameDayAs: Date(timeIntervalSince1970: self)) } }