0

2 つの日付があるとします。

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

NSDate プロパティを持つ MBDate という Core Data オブジェクトがあります。上記の日を含む日とその間のすべての MBDate を取得したいと考えています。したがって、時間、秒、分を無視して、8/29 から 12/01 までの間のすべての日を取得する必要があります。

何かのようなもの:

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

しかし、時間と分を無視して日だけを見るように指示する方法がわかりません。何か案は?

4

1 に答える 1

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];
于 2012-06-24T16:57:11.723 に答える