Jason Rybka
Jason Rybka

Reputation: 175

How to identify objects in array with Date range in last 7 days?

I know there are a lot of questions about dates and using/comparing dates within Swift, but I didn't see this specific question addressed.

Here is my issue, I have an array with objects in it, one of the object properties is a Date object created (createdDate = Date())when the record was saved. I'd like to be able to select the records that have a date from within the past X days (7, 28, etc.).

Not sure where to start any help is appreciated.

Upvotes: 3

Views: 3048

Answers (1)

MichaelV
MichaelV

Reputation: 1261

Swift has powerful tools to work with arrays. In you case you need filter your array.

let keyDate = Date(timeIntervalSinceNow: -7 * 60 * 60 * 24)
let filteredArray = originalArray.filter{ $0.createdDate > keyDate }

Check for more: https://useyourloaf.com/blog/swift-guide-to-map-filter-reduce/

Edit: Regarding obtaining keyDate - if you exactly last 7days * 24hours * 60minutes * 60seconds - use timeIntervalSince now. If you need date based not on seconds, but by calendar, then:

let keyDate = Calendar(identifier: .gregorian).date(byAdding: .day, value: -7, to: Date())

more details at: https://developer.apple.com/documentation/foundation/calendar/2293676-date

Upvotes: 8

Related Questions