NSPredicate:不加时间比较日期(目标C)

时间:2013-04-04 06:17:23

标签: ios objective-c date nspredicate nsfetchrequest

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

我目前的代码 -

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

2 个答案:

答案 0 :(得分: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中没有时间取出日期,或者你必须先没有时间存储它。

答案 1 :(得分:-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];