我有一个NSDate,时间组件归零。
我在NSArray中的每个对象中都有一个NSDate成员。
我想使用NSPredicate过滤掉一个对象数组,以便只保留与我用来过滤的日期匹配的对象。
问题是:对象中的日期字段包含我需要的时间组件。
如何形成谓词格式字符串,其中我只匹配日期部分而不是时间。
我制作了一个静态实用工具方法,该方法接受日期并给出时间组件归零的日期。
我可以在谓词字符串中使用此方法来转换该日期然后进行比较吗?
以下是代码:
NSDate *startingDate = [MyUtilities dateByRemovingTimeFromDate:self.currentEvent.associatedEvent.startDate];
NSDate *filterDate = [MyUtilities dateByAddingDays:_selectedRow toDate:startingDate];
NSArray *filteredArray = nil;
filteredArray = [_eventsList filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"displayDate == %@",filterDate]];
我可以使用我dateByRemovingTimeFromDate
MyUtilities
predicate string
内的displayDate
方法{1}}吗?
答案 0 :(得分:2)
您可以创建一个带日期范围的谓词,这样您就不需要比较时间(或修改它),只需计算一天的开始和结束范围(然后使用>=
开始日期和<=
结束日期。)
NSPredicate *filterPredicate = [NSPredicate predicateWithFormat:@"displayDate >= %@ AND displayDate <= %@", filterDate, nextDateAfterfilterDate];