Ios NSPredicate:比较没有时间的日期(目标C)

Ios NSPredicate:比较没有时间的日期(目标C),ios,objective-c,date,nspredicate,nsfetchrequest,Ios,Objective C,Date,Nspredicate,Nsfetchrequest,表中的列具有日期数据类型。我想设置一个谓词,在这个谓词中只比较日期而不比较时间。 由于时间关系,我没有得到正确的结果 我目前的代码- [fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"((install_date > %@) AND (install_date <= %@))", fromDate,toDate]] [fetchRequest setPredicate:[NSPredicate Predica

表中的列具有日期数据类型。我想设置一个谓词,在这个谓词中只比较日期而不比较时间。 由于时间关系,我没有得到正确的结果

我目前的代码-

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

[fetchRequest setPredicate:[NSPredicate Predicate WithFormat:@”((安装日期>%@)和(安装日期我使用此函数从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中取出没有时间的日期,或者您必须先存储它而没有时间。

我使用此解决方案仅比较没有时间的日期。在这种情况下,我的日期格式为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];

尽快意味着尽快bro@Mak:谢谢,但这不应该是请求任何帮助的礼节。而且**之后意味着?条件适用?这就是我的意思。请帮助我。很好。通过删除时间将日期转换为仅日期格式,然后应用谓词。您只需更改
fromDate
toDate即可作为日期的开始/结束,视情况而定。请参阅此问题:有关如何执行此操作的详细信息。NSDate变量始终包含时间。存储在数据库中的日期也包含时间。我只想比较存储在数据库中的日期部分。目前它正在比较yyyy mm dd hh:mm:ss=yyyy mm dd hh:mm:ss。我不想比较时间值。从日期中删除时间的更简单方法
[[NSCalendar currentCalendar]RangeoUnit:NSCalendarUnitDay startDate:&date interval:NULL forDate:date];
PS:这将日期设置为一天的开始日期,因此时间设置为00:00:00。如果用户更改时区设置,此方法将中断。