2014-02-11 21 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); 
    } 
相关问题