获取两个日期范围之间所有月份和年份的列表

时间:2016-05-31 05:48:49

标签: ios objective-c

我有一个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];

任何人都可以指出我正确的方向。我被困了几个小时。

提前致谢

1 个答案:

答案 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);