NSPredicates.swift 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. import CoreData
  2. import Foundation
  3. extension Date {
  4. static var startOfToday: Date {
  5. Calendar.current.startOfDay(for: Date())
  6. }
  7. static var oneDayAgo: Date {
  8. Calendar.current.date(byAdding: .day, value: -1, to: Date())!
  9. }
  10. static var oneHourAgo: Date {
  11. Calendar.current.date(byAdding: .minute, value: -60, to: Date())!
  12. }
  13. static var halfHourAgo: Date {
  14. Calendar.current.date(byAdding: .minute, value: -30, to: Date())!
  15. }
  16. static var twentyMinutesAgo: Date {
  17. Calendar.current.date(byAdding: .minute, value: -20, to: Date())!
  18. }
  19. static var twoHoursAgo: Date {
  20. Calendar.current.date(byAdding: .hour, value: -2, to: Date())!
  21. }
  22. static var fourHoursAgo: Date {
  23. Calendar.current.date(byAdding: .hour, value: -4, to: Date())!
  24. }
  25. static var sixHoursAgo: Date {
  26. Calendar.current.date(byAdding: .hour, value: -6, to: Date())!
  27. }
  28. static var oneWeekAgo: Date {
  29. Calendar.current.date(byAdding: .day, value: -7, to: Date())!
  30. }
  31. static var oneMonthAgo: Date {
  32. Calendar.current.date(byAdding: .month, value: -1, to: Date())!
  33. }
  34. static var threeMonthsAgo: Date {
  35. Calendar.current.date(byAdding: .month, value: -3, to: Date())!
  36. }
  37. }
  38. extension NSPredicate {
  39. static let all = NSPredicate(format: "TRUEPREDICATE")
  40. static let none = NSPredicate(format: "FALSEPREDICATE")
  41. static var predicateForOneDayAgo: NSPredicate {
  42. let date = Date.oneDayAgo
  43. return NSPredicate(format: "date >= %@", date as NSDate)
  44. }
  45. static var predicateForOneHourAgo: NSPredicate {
  46. let date = Date.oneHourAgo
  47. return NSPredicate(format: "date >= %@", date as NSDate)
  48. }
  49. static var predicateFor30MinAgo: NSPredicate {
  50. let date = Date.halfHourAgo
  51. return NSPredicate(format: "date >= %@", date as NSDate)
  52. }
  53. static var predicateFor20MinAgo: NSPredicate {
  54. let date = Date.twentyMinutesAgo
  55. return NSPredicate(format: "date >= %@", date as NSDate)
  56. }
  57. static var predicateFor30MinAgoForDetermination: NSPredicate {
  58. let date = Date.halfHourAgo
  59. return NSPredicate(format: "deliverAt >= %@", date as NSDate)
  60. }
  61. static var predicateFor120MinAgo: NSPredicate {
  62. let date = Date.twoHoursAgo
  63. return NSPredicate(format: "date >= %@", date as NSDate)
  64. }
  65. static var predicateForFourHoursAgo: NSPredicate {
  66. let date = Date.fourHoursAgo
  67. return NSPredicate(format: "date >= %@", date as NSDate)
  68. }
  69. static var predicateForSixHoursAgo: NSPredicate {
  70. let date = Date.sixHoursAgo
  71. return NSPredicate(format: "date >= %@", date as NSDate)
  72. }
  73. static var predicateForOneWeek: NSPredicate {
  74. let date = Date.oneWeekAgo
  75. return NSPredicate(format: "date >= %@", date as NSDate)
  76. }
  77. static var predicateForOneMonth: NSPredicate {
  78. let date = Date.oneMonthAgo
  79. return NSPredicate(format: "date >= %@", date as NSDate)
  80. }
  81. static var predicateForThreeMonths: NSPredicate {
  82. let date = Date.threeMonthsAgo
  83. return NSPredicate(format: "date >= %@", date as NSDate)
  84. }
  85. }