说我有两个日期:
minDate:2012-08-29 12:22:17 +0000
maxDate:2011-12-01 18:14:38 +0000
我有一个名为MBDate的Core Data对象,它有一个NSDate属性。我希望得到所有MBDate的日期,包括在上述日子之间。所以它应该忽略小时,秒和分钟,并且只需要介于两者之间的所有日子,包括8月29日至12月1日。
类似的东西:
predicate = [NSPredicate predicateWithFormat:@"date < %@ AND date > %@", maxDate, minDate];
但是我不知道如何告诉它忽略时间和分钟,只看一下日子。有什么想法吗?
答案 0 :(得分:3)
您可以使用NSDateComponents设置“低”和“高”日期,并在谓词中使用这些日期。
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];