我有一个ios应用程序,我希望在两个日期之间获得所有月份和年份的列表。
例如:开始日期是今天,结束日期是2015年1月6日,那么产出将是2016年5月,2016年4月,2016年3月,.......,2015年2月,1月-2015在一个阵列和多年的另一个阵列中,例如:2016年,2015年就像这样。
当我搜索时,我发现了一些解决方案,但所有解决方案都会返回两个日期之间的月数,而不是我想要的。
我使用了这段代码
NSInteger month = [[[NSCalendar currentCalendar] components: NSCalendarUnitMonth
fromDate: yourFirstDate
toDate: yourSecondDate
options: 0] month];
任何人都可以指出我正确的方向。我被困了几个小时。
提前致谢
答案 0 :(得分:2)
NSDateFormatter *formatter=[[NSDateFormatter alloc]init];
[formatter setDateFormat:@"dd-MMM-yyyy"];
NSDate *startingDate =[NSDate date] ;
NSDate *endingDate = [formatter dateFromString:@"06-Jan-2015"];
NSDateComponents *Components = [[NSDateComponents alloc] init];
NSMutableArray *dateArray = [NSMutableArray array];
NSMutableArray *yearArray = [NSMutableArray array];
NSUInteger month=1;
NSDate *nextDate = endingDate;
do {
[formatter setDateFormat:@"MMM-yyyy"];
[dateArray insertObject:[formatter stringFromDate:nextDate] atIndex:0];
[formatter setDateFormat:@"yyyy"];
if (![yearArray containsObject:[formatter stringFromDate:nextDate]])
{
[yearArray insertObject:[formatter stringFromDate:nextDate] atIndex:0];
}
[Components setMonth:month++];
NSDate *d = [[NSCalendar currentCalendar] dateByAddingComponents:Components toDate:endingDate options:0];
nextDate = d;
} while([nextDate compare:startingDate] == NSOrderedAscending);
NSLog(@"%@",dateArray);
NSLog(@"%@",yearArray);