2016-05-31 291 views
0

我有一个ios应用程序,我希望在两个日期之间获取所有月份和年份的列表。获取两个日期范围内的所有月份和年份的列表

例如:开始日期是今天和结束日期是2015年1月6日,那么产量将是2016年5月 - 2016年4月 - 2016年3月 - - 2015年2月, 2015年1月在一个阵列和另一个阵列年,例如:2016年,2015年这样。

当我搜索时,我发现一些解决方案,但所有解决方案返回两个日期之间的月数,而不是我想要的。

我用这个代码

NSInteger month = [[[NSCalendar currentCalendar] components: NSCalendarUnitMonth 
               fromDate: yourFirstDate 
               toDate: yourSecondDate 
               options: 0] month]; 

任何人都可以点我到正确的方向。我坚持了几个小时。

在此先感谢

回答

1
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); 
相关问题