2016-05-31 6 views
0

Ich habe eine iOS-Anwendung, in der ich die ganze Liste von Monaten und Jahren zwischen zwei Daten erhalten möchte.Liste alle Monate und Jahr zwischen zwei Datumsbereichen abrufen

Für zB: das Startdatum ist heute und das Enddatum ist 6-Jan-2015 dann die Ausgabe wird Mai-2016, April-2016, März-2016, ......., Februar-2015, Jan-2015 in einem Array und Jahren in einem anderen Array zB: 2016, 2015 so.

Wenn ich suchte, fand ich eine Lösung, aber all diese Lösungen gibt die Anzahl der Monate zwischen zwei Daten und nicht genau, was ich will.

benutzte ich diesen Code

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

Kann mir jemand auf richtige Richtung. Ich bin seit ein paar Stunden daran fest.

Vielen Dank im Voraus

Antwort

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); 
Verwandte Themen