我使用Core Data来存储我的数据模型对象。每个对象都有NSDate属性。

NSDate属性的格式如下:

2013-03-18 12:50:31 +0000

我需要创建谓词,仅通过此值2013-03-18即可获取我的对象,而无需花费时间。

最佳答案

如果您将日期存储为实际日期,那么您应该利用它来发挥自己的优势,而不用弄乱格式。您可以简单地创建一个谓词,以检查日期是否在两个日期之间(带时间)。第一个日期是您的日期,时间为00:00:00,第二个日期是第二天。

// Create your date (without the time)
NSDateComponents *yourDate = [NSDateComponents new];
yourDate.calendar = [NSCalendar currentCalendar];
yourDate.year  = 2013;
yourDate.month = 3;
yourDate.day   = 18;
NSDate *startDate = [yourDate date];

// Add one day to the previous date. Note that  1 day != 24 h
NSDateComponents *oneDay = [NSDateComponents new];
oneDay.day = 1;
// one day after begin date
NSDate *endDate = [[NSCalendar currentCalendar] dateByAddingComponents:oneDay
                                                                toDate:startDate
                                                               options:0];

// Predicate for all dates between startDate and endDate
NSPredicate *dateThatAreOnThatDay =
    [NSPredicate predicateWithFormat:@"(date >= %@) AND (date < %@)",
                                     startDate,
                                     endDate]];

10-06 10:51