0

我在表中有 DATE 数据类型的列。我想设置谓词,我想在其中只比较没有时间的日期。由于日期的原因,我没有得到正确的结果。

我当前的代码 -

[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"((install_date > %@) AND (install_date <= %@))", fromDate,toDate]]
4

2 回答 2

2

我使用此功能从 NSDate 中抽出时间

+(NSDate *)dateWithOutTime:(NSDate *)datDate
{
if( datDate == nil ) {
    datDate = [NSDate date];
}
NSDateComponents* comps = [[NSCalendar currentCalendar] components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:datDate];
return [[NSCalendar currentCalendar] dateFromComponents:comps];

}

我的建议是取出所有匹配的值,然后通过比较没有时间的日期来相应地过滤它们,因为你不能在 CoreData 中取出没有时间的日期,或者你必须先在没有时间的情况下存储它。

于 2013-04-04T06:26:18.513 回答
-1

在这种情况下,我使用此解决方案仅比较没有时间的日期,我的日期格式是 yyyy-MM-dd:

NSDateFormatter * formatter = [NSDateFormatter new];
[formatter setDateFormat:@"yyyy-MM-dd"];
NSString * dateString = [formatter stringFromDate:[NSDate date];
NSDate *rdate = [formatter dateFromString:dateString];

NSPredicate *datePre = [NSPredicate predicateWithFormat:@"date = %@", rdate];
于 2013-12-19T06:12:12.240 回答