iOS - 过滤仅包含今天日期的对象数组

时间:2017-06-03 15:21:30

标签: ios arrays swift sorting filter

基本上我的挑战是:

我有一个对象数组。每个对象都有一个日期属性。 我想获得与今天的日期匹配的对象数组。

所以,我想根据日期对数组进行分组。

我想通过分组今天,昨天,过去7天的对象来显示历史记录列表,.....

我可以使用sort函数对数组进行排序:

historylist.sort(by: {$0.createdDate! as Date > $1.createdDate! as Date })

但我需要一个基于日期的过滤功能。 我想要今天创建的历史主义者的所有数据。

任何快速伪代码。

感谢。

2 个答案:

答案 0 :(得分:4)

let date1 = NSDate()
let date2 = NSDate()
let dates = [date1, date2]

let calendar = NSCalendar.currentCalendar()
let todayDates = dates.filter({calendar.isDateInToday($0)})

答案 1 :(得分:2)

演示如何使用过滤date objects

let d1 = Date().addingTimeInterval(22000000)
let d2 = Date().addingTimeInterval(23000000)
let d3 = Date().addingTimeInterval(30000000)
let dates = [d1, d2, d3, Date(), Date()]

let calendar = Calendar.current
let todayDates = dates.filter({calendar.isDateInToday($0 as Date)})
print(todayDates) // [2017-06-03 15:50:11 +0000, 2017-06-03 15:50:11 +0000]

所以在你的情况下你应该这样做:

let todayDates = historylist.filter({calendar.isDateInToday($0.createdDate as Date)})

<强>更新
要将string转换为Date,请使用以下内容:

extension String {
    var toDate: Date {
        return Date.Formatter.customDate.date(from: self)!
    }
}

extension Date {
    struct Formatter {
        static let customDate: DateFormatter = {
            let formatter = DateFormatter()
            formatter.locale = Locale(identifier: "en_US_POSIX")
            formatter.dateFormat = "MM-dd-yyyy hh:mm:ss a"
            return formatter
        }()
    }
}

let strDate = "06-01-2017 09:32:48 PM"
let date = strDate.toDate