我有一个对象数组,其中属性是NSDate类型的日期。该数组包括未来几天和过去几天。
我想从该数组中获取一个元素数组,其中只包含今天的日期,而不是过去的24小时。
我通过降序(new to old)命令元素:
allDashboards.sortInPlace({ $0.date!.compare($1.date!) == NSComparisonResult.OrderedDescending
我尝试做一个for循环,检查日期是否是昨天并在那里删除数组,但它不起作用,因为它可能没有昨天日期的元素:
for dash in allDashboards {
if (NSCalendar.currentCalendar().isDateInYesterday(dash.date!)) {
print(i)
allDashboards.removeRange(Range.init(start: 0, end: i))
break
}
i += 1
}
是否有方法可以查看日期是否超过一天,而不是日期是当天的一部分?
答案 0 :(得分:1)
一衬垫:
let todayDashboards = allDashboards.filter { NSCalendar.currentCalendar().isDateInToday($0.date!) }
答案 1 :(得分:0)
您可以使用NSDateComponents
创建代表可接受范围开始和结束的日期。这些可以是你想要的任何东西。
拥有这些日期后,您可以创建一个NSPredicate
,其中包含日期>
的开头日期和<
结束日期。这将为您生成一个过滤的数组。
您也可以使用isDateInToday
过滤内容。
你不能做的是迭代数组并同时改变它,这是你当前代码在allDashboards.removeRange
循环中对for
所做的事情。
答案 2 :(得分:0)
您可以使用filter
功能和isDateInToday
NSCalendar
let filteredDashboards = allDashboards.filter{ NSCalendar.currentCalendar().isDateInToday($0.date!) }