形成一个谓词来过滤date之间

说我有两个date:

minDate:2012-08-29 12:22:17 +0000 maxDate:2011-12-01 18:14:38 +0000 

我有一个叫做MBDate的核心数据对象,它有一个NSDate属性。 我想要得到所有MBDate的日子,包括在上述日子之间。 所以它应该忽略小时,秒和分钟,并且只需要在8/29 – 12/01之间的所有日子。

就像是:

 predicate = [NSPredicate predicateWithFormat:@"date < %@ AND date > %@", maxDate, minDate]; 

但我不确定我会怎样告诉它无视时间和分钟,只看日子。 有任何想法吗?

您可以使用NSDateComponents设置“低”和“高”的date,并在谓词中使用这些date。

 NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; gregorian.timeZone = [NSTimeZone timeZoneWithAbbreviation"@"UTC"]; NSDateComponents *dateComponents = [gregorian components:(NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit) fromDate:minDate]; [dateComponents setHour:0]; [dateComponents setMinute:0]; [dateComponents setSecond:0]; NSDate *lowDate = [gregorian dateFromComponents:dateComponents]; dateComponents = [gregorian components:(NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit) fromDate:maxDate]; [dateComponents setHour:23]; [dateComponents setMinute:59]; [dateComponents setSecond:59]; NSDate *highDate = [gregorian dateFromComponents:dateComponents];