从今天日期的数组中获取元素

时间:2016-04-25 10:27:39

标签: ios arrays swift nsdate

我有一个对象数组,其中属性是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
    }

是否有方法可以查看日期是否超过一天,而不是日期是当天的一部分?

3 个答案:

答案 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!) }