Используйте NSMonthCalendarUnit для параметра компонентов текущего календаря, чтобы получить номер текущего месяца, например. 9 для сентября, а затем NSYearCalendarUnit для текущего года, например. 2012. Затем используйте их в цикле for, который использует модульную арифметику для переноса на следующий год.
Если номер месяца в цикле for меньше текущего месяца, используйте текущий год плюс 1 в качестве следующего года, иначе используйте текущий год.
Обратите внимание, что номера месяцев, возвращаемые при использовании NSMonthCalendarUnit, начинаются с 1, тогда как номера индексов для monthSymbols начинаются с нуля. Это означает, что хотя мы начинаем с 9 для сентября, месяц, который мы получаем из этого массива, — это октябрь, который является следующим месяцем, который нам нужен.
/*
next 12 months after current month
*/
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSDate *today = [NSDate date];
NSCalendar *currentCalendar = [NSCalendar currentCalendar];
NSDateComponents *monthComponents = [currentCalendar components:NSMonthCalendarUnit fromDate:today];
int currentMonth = [monthComponents month];
NSDateComponents *yearComponents = [currentCalendar components:NSYearCalendarUnit fromDate:today];
int currentYear = [yearComponents year];
int nextYear = currentYear + 1;
int months = 1;
int year;
for(int m = currentMonth; months < 12; m++){
int nextMonth = m % 12;
if(nextMonth < currentMonth){
year = nextYear;
} else {
year = currentYear;
}
NSLog(@"%@ %i",[[dateFormatter monthSymbols] objectAtIndex: nextMonth],year);
months++;
}
person
SPA
schedule
17.09.2012