處理日期的最好方法是使用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