NSPredicates.swift 2.5 KB

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