我有一个核心数据上下文,其中包含存储有日期的对象。我想按此顺序仅获取当前一周(周一至周日)的数据。我没有寻找过去7天。
日期可以是存储在实体中的日期,也可以是将对象添加到核心数据时的日期(它们相同)。
我可以使用带有开始日期和结束日期的谓词,如下所示:
NSPredicate *weekPredicate = [NSPredicate predicateWithFormat:@"((date > %@) AND (date <= %@)) || (date = nil)",startDate,endDate];
但是如何计算startDate和endDate?
最佳答案
-(NSDate *) lastMondayBeforeDate:(NSDate*)timeStamp {
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comps =
[gregorian components:NSWeekdayCalendarUnit fromDate:timeStamp];
NSInteger weekday = [comps weekday];
weekday = weekday==1 ? 6 : weekday-2; // start with 0 on Monday rather than 1 on Sunday
NSTimeInterval secondsSinceMondayMidnight =
(NSUInteger) [timeStamp timeIntervalSince1970] % 60*60*24 + weekday * 60*60*24;
return [timeStamp dateByAddingTimeInterval:-secondsSinceMondayMidnight];
}
-(NSDate *) nextMondayAfterDate:(NSDate*)timeStamp {
return [[self lastMondayBeforeDate:timeStamp]
dateByAddingTimeInterval:60*60*24*7];
}
关于iphone - 核心数据获取本周的数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9758813/