基本上我的挑战是:
我有一个对象数组。每个对象都有一个日期属性。 我想获得与今天的日期匹配的对象数组。
所以,我想根据日期对数组进行分组。
我想通过分组今天,昨天,过去7天的对象来显示历史记录列表,.....
我可以使用sort函数对数组进行排序:
historylist.sort(by: {$0.createdDate! as Date > $1.createdDate! as Date })
但我需要一个基于日期的过滤功能。 我想要今天创建的历史主义者的所有数据。
任何快速伪代码。
感谢。
答案 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