你好,
我正在开发Core Data应用程序,必须根据日期进行一些过滤.我进行了一些测试,看起来在比较NSDates时,Core Data也在比较日期的时间成分.
我的代码:
- (BOOL)hasSpeakersWithinDateRangeFrom:(NSDate *)startOfRange through:(NSDate *)endOfRange {
NSPredicate* dateRangePredicate = [NSPredicate predicateWithFormat:@"startOn <= %@ && endOn >= %@", startOfRange, endOfRange];
NSSet* speakersWithinDateRange = [self.speakers filteredSetUsingPredicate:dateRangePredicate];
if ([speakersWithinDateRange count] > 0)
return YES;
else
return NO;
}
Run Code Online (Sandbox Code Playgroud)
我有一个"方便"的方法,是一个单行的:
- (BOOL)hasSpeakersNow {
return [self hasSpeakersWithinDateRangeFrom:[NSDate date] through:[NSDate date]];
}
Run Code Online (Sandbox Code Playgroud)
当我运行一些基本测试时,它不能按计划工作,而且我可以告诉Core Data正在比较NSDate对象的时间组件和日期.
那么,我怎样才能重写上面的内容以忽略时间,只对当天过去敏感呢?
谢谢
您可能希望熟悉NSDateComponents和NSCalendar.您可能需要做的是从日期中提取组件,并仅使用没有时间组件的日,月和年组件构建新的NSDates.
对于"当前"日,您需要使用今天午夜的日期创建1天范围,并通过将日期添加1天来创建日期.NSCalendar有方法为您做一些这样的事情.
这些文档可能会有所帮助:
| 归档时间: |
|
| 查看次数: |
3481 次 |
| 最近记录: |