TimeInterval+Extension.swift 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. //
  2. // TimeInterval+Extension.swift
  3. // Lanu
  4. //
  5. // Created by OneeChan on 2025/11/20.
  6. //
  7. import Foundation
  8. extension TimeInterval {
  9. // 辅助方法:格式化 "时:分"(补零,如 09:05)
  10. func formattedTime() -> String {
  11. Date(timeIntervalSince1970: self).formattedTime()
  12. }
  13. // 辅助方法:格式化 "星期一"
  14. func formattedWeek() -> String {
  15. Date(timeIntervalSince1970: self).formattedWeek()
  16. }
  17. // 辅助方法:格式化 "星期 时:分"(如 星期一 09:30)
  18. func formattedWeekWithTime() -> String {
  19. Date(timeIntervalSince1970: self).formattedWeekWithTime()
  20. }
  21. // 辅助方法:格式化 "月/日"(如 10/23)
  22. func formattedDate(_ separator: String = "/") -> String {
  23. Date(timeIntervalSince1970: self).formattedDate(separator)
  24. }
  25. // 辅助方法:格式化 "月/日 时:分"(如 10/23 14:30)
  26. func formattedDateWithTime(_ separator: String = "/") -> String {
  27. Date(timeIntervalSince1970: self).formattedDateWithTime(separator)
  28. }
  29. // 辅助方法:格式化 "年/月/日"(如 2025/10/23)
  30. func formattedFullDate(_ separator: String = "/", normal: Bool = false) -> String {
  31. Date(timeIntervalSince1970: self).formattedFullDate(separator, normal: normal)
  32. }
  33. // 辅助方法:格式化 "年/月/日 时:分"(如 2025/10/23 14:30)
  34. func formattedFullDateWithTime(_ separator: String = "/") -> String {
  35. Date(timeIntervalSince1970: self).formattedFullDateWithTime(separator)
  36. }
  37. }
  38. extension TimeInterval {
  39. var tencentIMTimeDesc: String {
  40. Date(timeIntervalSince1970: self).tencentIMTimeDesc
  41. }
  42. var relativeTimeText: String {
  43. guard curTime > self else { return .init(key: "A00352") }
  44. let diff = Int(curTime - self)
  45. if diff < 60 {
  46. return .init(key: "A00352")
  47. }
  48. let minute = diff / 60
  49. if minute < 60 {
  50. return minute == 1 ? .init(key: "A00353", minute) : .init(key: "A00354", minute)
  51. }
  52. let hour = minute / 60
  53. if hour < 24 {
  54. return hour == 1 ? .init(key: "A00355", hour) : .init(key: "A00356", hour)
  55. }
  56. let day = hour / 24
  57. return day == 1 ? .init(key: "A00357", day) : .init(key: "A00358", day)
  58. }
  59. }
  60. extension TimeInterval {
  61. var inMinutes: Bool {
  62. curTime - self < 60
  63. }
  64. var inHour: Bool {
  65. curTime - self < 3600
  66. }
  67. var inDay: Bool {
  68. curTime - self < 3600 * 24
  69. }
  70. var isSameDay: Bool {
  71. Calendar.current.isDate(Date(), inSameDayAs: Date(timeIntervalSince1970: self))
  72. }
  73. }