NSPredicates.swift 2.2 KB

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