2014-02-11 18 views
4
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
dateFormatter.dateFormat = @"yyyy"; 
NSDate *date = [dateFormatter dateFromString:@"2011"]; 
for(int month=0;month<=12;month++) 
    { 
[email protected]"MMMM"; 
NSString * monthString = [[dateFormatter stringFromDate:date] capitalizedString]; 
NSLog(@"month: %@", monthString); 
    } 

我需要顯示特定年份中的所有月份。例如,如果我將年份設置爲2011,那麼我希望整個12個月在該年份中使用上述碼。在XCode 5中顯示當年的月份列表

但是答案是,我得到的是一月份的印刷次數爲12次,但我需要在特定年份獲得整整12個月。

+1

http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSDateComponents_Class/ – jrturton

+0

使用NSDateComponents。你正在循環使用「月」(12次),但不在循環中使用這些變量。這是正常的,你沒有得到12次相同的事情。 – Larme

+0

有沒有特定月份缺失的年份?根據我的經驗(僅30年),每年都有12個月的時間。 ;-) –

回答

1

試試這個下面的代碼。

 //NSInteger startingMonth = 1; 
    NSInteger startingYear = 2014; 

    // we'll need this in several places 
    NSCalendar *cal = [NSCalendar currentCalendar]; 

    // build the first date (in the starting month and year) 
    NSDateComponents *comps = [[NSDateComponents alloc] init]; 
    //[comps setMonth:startingMonth]; 
    [comps setYear:startingYear]; 
    // [comps setDay:1]; 
    NSDate *date = [cal dateFromComponents:comps]; 

    // this is our output format 
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    [formatter setDateFormat:@"MMMM YYYY"]; 
    NSDateFormatter *format1 = [[NSDateFormatter alloc] init]; 
    [format1 setDateFormat:@"MM yy"]; 
    // we need NSDateComponents for the difference, i.e. at each step we 
    // want to go one month further 
    NSDateComponents *comps2 = [[NSDateComponents alloc] init]; 
    [comps2 setMonth:1]; 

    for (int i= 0; i < 12; i++) { 
     NSLog(@"month list %@", [format1 stringFromDate:date]); 
     NSString *str=[NSString stringWithFormat:@"%@",[formatter stringFromDate:date]]; 
     [mothlist_ary addObject:str]; 
     NSLog(@"GET MONTH %@",mothlist_ary); 
     // add 1 month to date 
     date = [cal dateByAddingComponents:comps2 toDate:date options:0]; 

    } 
1

嘗試......

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    dateFormatter.dateFormat = @"yyyy"; 
    NSDate *date = [dateFormatter dateFromString:@"2011"]; 

    NSCalendar *cal = [NSCalendar currentCalendar]; 
    NSDateComponents *components = [cal components:(NSMonthCalendarUnit) fromDate:date]; 


    [email protected]"MMMM"; 

    for(int month=1;month<=12;month++) 
    { 
     [components setMonth:(month)]; 
     NSDate *lastMonth = [cal dateFromComponents:components]; 

     NSString * monthString = [[dateFormatter stringFromDate:lastMonth] capitalizedString]; 
     NSLog(@"month: %@", monthString); 
    } 
相關問題