0

コア データから取得した NSManagedObject の配列があり、今日の日付 >= で配列をフィルター処理したいので、次のようにします。

NSPredicate *pred = [NSPredicate predicateWithFormat:@"(firstAired >= %@)", [NSDate date]];

しかし、今日の日付だけが表示され、今日の日付は表示されないのはなぜですか?

4

4 に答える 4

2
        NSDate *now = [NSDate date];
        NSCalendar *calendar = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
        calendar.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; 
        NSDateComponents *components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:now];
        [components setHour:00];
        NSDate *today = [calendar dateFromComponents:components];

このように機能します、すべてのおかげで...

于 2012-04-18T11:40:41.100 に答える
2

このように真夜中の日付を作成し、それを述語に渡す必要があります

      NSDateComponents *currentComponents = [[NSCalendar currentCalendar]components:NSMinuteCalendarUnit|NSHourCalendarUnit|NSSecondCalendarUnit fromDate:[NSDate date]];
[currentComponents setMinute:0];
[currentComponents setHour:0];
[currentComponents setSecond:0];
NSCalendar *calendar = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *dateToCheck = [calendar dateFromComponents:currentComponents];
于 2012-04-18T11:11:27.960 に答える
0

[NSDate date]現在時刻です。したがって、この述語は、firstAired が今日以降であり、今日より前ではないレコードのみをフェッチします。NSDate時刻 00:00:00 で を作成します。

于 2012-04-18T10:53:11.270 に答える
0

[NSDate date] は、実行された瞬間の時、分、秒 .... で正確な日付を返すためです。すべての「今日」の項目を検索する場合は、[NSDate date] を今日の真夜中の NSDate オブジェクトで変更する必要があります。つまり、NSDate.date から日付コンポーネントを抽出し、年、月、日のコンポーネントを使用して、時間: 00:00AM の新しい日付オブジェクトを作成します。

于 2012-04-18T10:57:02.283 に答える