2013-05-16 2 views
1

Я ищу способ получить список последних шести месяцев с сегодняшнего дня.Список предыдущих шести месяцев

Сегодня в мае, так что я бы искал выход:

May 2013, 
Apr 2013, 
Mar 2013, 
Feb 2013, 
Jan 2013, 
Dec 2012 

Я понимаю, что это будет что-то делать с NSDateComponents, но я не могу найти любую помощь на этом.

ответ

1

Попробуйте это, вы можете изменить значение int i по вашему выбору

NSDate *today = [[NSDate alloc] init]; 
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDateComponents *offsetComponents = [[NSDateComponents alloc] init]; 

for (int i = 0; i <=6 ;i++) { 
    [offsetComponents setMonth:-i]; 

    NSDate *dateStr = [gregorian dateByAddingComponents:offsetComponents toDate:today options:0]; 
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    [formatter setDateFormat:@"MMMM YYYY"]; 
    NSString *stringFromDate = [formatter stringFromDate:dateStr]; 
    NSLog(@"%@", stringFromDate); 
} 
+0

Совершенная спасибо! Я на самом деле решил его с помощью аналогичного маршрута, вернулся сюда, чтобы обновить свой пост, и у меня уже были ответы. Очень признателен! –

+0

Эффективность этого может быть значительно улучшена путем перемещения 'formatter' создания и настройки вне цикла' for'. Создание форматирования - это большие накладные расходы, поэтому вы должны попытаться повторно использовать, где это возможно – jr19

1

Я хотел бы предложить использовать MTDates с чем-то вроде:

[[NSDate date] mt_dateMonthsBefore:1]; 
[[NSDate date] mt_dateMonthsBefore:2]; 
[[NSDate date] mt_dateMonthsBefore:3]; 
[[NSDate date] mt_dateMonthsBefore:4]; 
[[NSDate date] mt_dateMonthsBefore:5]; 
[[NSDate date] mt_dateMonthsBefore:6]; 

 Смежные вопросы

  • Нет связанных вопросов^_^