Ios 查找一周/月/年的所有天数并添加到NSMutableArray

Ios 查找一周/月/年的所有天数并添加到NSMutableArray,ios,objective-c,nsdate,nscalendar,Ios,Objective C,Nsdate,Nscalendar,我有一个NSMutableArray,我希望能够只提取某个时间范围内的行,例如每周、每月或每年。我可以得到一周前的日期,这样我就可以得到当前日期和一周前的日期,但我需要能够获取所有这些日期,然后将它们添加到数组中,以便我可以搜索它们 这就是我如何抓住一天和一周前的一天 -(void)getCalDays { cal = [NSCalendar currentCalendar]; NSDate *date = [NSDate date]; NSDateComponents *comps = [c

我有一个NSMutableArray,我希望能够只提取某个时间范围内的行,例如每周、每月或每年。我可以得到一周前的日期,这样我就可以得到当前日期和一周前的日期,但我需要能够获取所有这些日期,然后将它们添加到数组中,以便我可以搜索它们

这就是我如何抓住一天和一周前的一天

-(void)getCalDays {
cal = [NSCalendar currentCalendar];

NSDate *date = [NSDate date];
NSDateComponents *comps = [cal components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit)fromDate:date];
today = [cal dateFromComponents:comps];


   NSLog(@"today is %@", today);
    [self getWeek];
}

-(void)getWeek {
    NSDateComponents *components = [[NSDateComponents alloc] init];
    [components setDay:-6];
    weekDate = [cal dateByAddingComponents:components toDate:today options:0];
    NSLog(@"Week of %@ THRU %@", today, weekDate);
}

那么,我怎样才能找到这两个日期之间的所有日期并将它们加载到一个数组中呢?

您正在路上。关键是在循环中提前组件的日期,并从中提取日期

NSMutableArray *result = [NSMutableArray array];
NSCalendar *cal = [NSCalendar currentCalendar];

NSDate *startDate = // your input start date
NSDate *endDate = // your input end date

NSDateComponents *comps = [cal components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit)fromDate:startDate];
NSDate *date = [cal dateFromComponents:comps];

while (![date isEqualToDate:endDate]) {
    [result addObject:date];
    [comps setDay:(comps.day + 1)];
    date = [cal dateFromComponents:comps];
}
请注意,这将产生一组日期,包括第一个日期,不包括最后一个日期。您可能可以自己解决如何更改边缘条件