处理日期的最好方法是使用NSDateComponents。 例如,来获得日期为明天的使用:
NSCalendar *cal = [NSCalendar currentCalendar];
NSDateComponents *comp = [[[NSDateComponents alloc] init] autorelease];
[comp setDay:1];
NSDate *today = [NSDate date];
NSDate *tomorrow = [cal dateByAddingComponents:comp toDate:today options:0];
所以,你需要做的是:
- 获取日期所有相关的日期类别
当你推一个按钮,构建一个谓词以仅检索两个日期之间的对象。例如,获取在“明天”类别中的所有对象:
NSPredicate *pred = [NSPredicate predicateWithFormat:@"date > %@ AND date < %@", tomorrow, nextWeek];
您可以使用一个小的便利方法得到的日期,通过添加类别的NSDate用这种方法:
@implementation NSDate (Components)
-(NSDate *) dateByAddingCalendarUnit:(NSCalendarUnit)calendarUnit andCount:(NSInteger) count
{
NSDateComponents *comp = [[NSDateComponents alloc] init];
switch (calendarUnit) {
case NSSecondCalendarUnit:
[comp setSecond:count];
break;
case NSMinuteCalendarUnit:
[comp setMinute:count];
break;
case NSHourCalendarUnit:
[comp setHour:count];
break;
case NSDayCalendarUnit:
[comp setDay:count];
break;
case NSWeekCalendarUnit:
[comp setWeek:count];
break;
case NSWeekdayCalendarUnit:
[comp setWeekday:count];
break;
case NSWeekdayOrdinalCalendarUnit:
[comp setWeekdayOrdinal:count];
break;
case NSMonthCalendarUnit:
[comp setMonth:count];
break;
case NSYearCalendarUnit:
[comp setYear:count];
break;
case NSEraCalendarUnit:
[comp setEra:count];
break;
default:
break;
}
NSCalendar *cal = [NSCalendar currentCalendar];
NSDate *newDate = [cal dateByAddingComponents:comp toDate:self options:0];
[comp release];
return newDate;
}
@end
,并使用此方法是这样的:
NSDate *lastWeek = [[NSDate date] dateByAddingCalendarUnit:NSWeekCalendarUnit andCount:-1];
,你用你的数据库什么样的前端?它是核心数据还是SQL,还是其他?您是否正在寻找可以自动确定“上周”时间的日期的代码,或者您是否在寻找有关创建谓词的帮助? – Jim
我正在使用SQLite和我不希望他们自动确定,我想排序他们..就像今天是27九月..如果我有日期,说我是从oct3然后它应该自动添加在块(数组) –
因此,如果我理解正确,你需要计算“下周”这个与任意日期相关的开始和结束日期。然后,当按下“next week”按钮时,会得到这两个日期(开始日期和结束日期),然后可以将这些日期设置为约束条件,执行查询并显示结果。这是否说明了它?哪部分需要帮助? – Jim