我有一个 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];
}
请注意,这将生成一个日期集合,包含第一个日期,不包含最后一个日期。您或许可以自己弄清楚如何更改边缘条件。
关于ios - 查找一周/一个月/一年的所有日期并添加到 NSMutableArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24345456/