Date+Extension.swift 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. //
  2. // Date+Extension.swift
  3. // Bark
  4. //
  5. // Created by huangfeng on 2020/5/26.
  6. // Copyright © 2020 Fin. All rights reserved.
  7. //
  8. import UIKit
  9. extension Date {
  10. func formatString(format: String) -> String {
  11. let formatter = DateFormatter()
  12. formatter.dateFormat = format
  13. return formatter.string(for: self) ?? ""
  14. }
  15. func agoFormatString() -> String {
  16. let clendar = NSCalendar(calendarIdentifier: .gregorian)
  17. let cps = clendar?.components([.hour, .minute, .second, .day, .month, .year], from: self, to: Date(), options: .wrapComponents)
  18. let year = cps!.year!
  19. let month = cps!.month!
  20. let day = cps!.day!
  21. let hour = cps!.hour!
  22. let minute = cps!.minute!
  23. if year > 0 || month > 0 || day > 0 || hour > 12 {
  24. return formatString(format: "yyyy-MM-dd HH:mm")
  25. }
  26. if hour > 1 {
  27. return formatString(format: "HH:mm")
  28. }
  29. if hour > 0 {
  30. if minute > 0 {
  31. return String(format: NSLocalizedString("timeMinHourAgo"), hour, minute)
  32. }
  33. return String(format: NSLocalizedString("timeHourAgo"), hour)
  34. }
  35. if minute > 1 {
  36. return String(format: NSLocalizedString("timeMinAgo"), minute)
  37. }
  38. return NSLocalizedString("timeJustNow")
  39. }
  40. }
  41. extension Date {
  42. static var yesterday: Date { return Date().dayBefore }
  43. static var tomorrow: Date { return Date().dayAfter }
  44. static var lastHour: Date { return Calendar.current.date(byAdding: .hour, value: -1, to: Date())! }
  45. var dayBefore: Date {
  46. return Calendar.current.date(byAdding: .day, value: -1, to: noon)!
  47. }
  48. var dayAfter: Date {
  49. return Calendar.current.date(byAdding: .day, value: 1, to: noon)!
  50. }
  51. var noon: Date {
  52. return Calendar.current.date(bySettingHour: 0, minute: 0, second: 0, of: self)!
  53. }
  54. var month: Int {
  55. return Calendar.current.component(.month, from: self)
  56. }
  57. var isLastDayOfMonth: Bool {
  58. return dayAfter.month != month
  59. }
  60. }