Search code examples
iosnsdatensdateformatter

How to get all months of a year in particular format


How can i get all the months of a year in a table view in this particular format "January 2013" and so on. I need to set the starting month also. Below is the code i tried.

int mCurrentMonth = [dateComponents month];
int mCurrentYear = [dateComponents year];

NSString * dateString = [NSString stringWithFormat: @"%d",mCurrentMonth];

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM"];
NSDate* myDate = [dateFormatter dateFromString:dateString];

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMMM"];
NSString *stringFromDate = [formatter stringFromDate:myDate];
NSString *mon = [NSString stringWithFormat:@"%@ %d",stringFromDate, mCurrentYear];
NSLog(@"month:%@", mon);

Above code is giving me only current month in required format. Other way i tried is this

NSDateFormatter *df = [[NSDateFormatter alloc] init];

for (int i = 0; i < 12; i++){
    NSString *monthName = [[df monthSymbols] objectAtIndex:i];
    NSLog(@"months name:%@", monthName);
}

This way i am getting all months name but not with year. I am not getting how to achieve the desired output that is January 2013 February 2013 and so on.


Solution

  • Try this :

      NSDateFormatter  *dateFormatter   = [[NSDateFormatter alloc] init];
    
        NSDate           *today           = [NSDate date];
        NSCalendar       *currentCalendar = [NSCalendar currentCalendar];
        NSDateComponents *yearComponents  = [currentCalendar components:NSYearCalendarUnit  fromDate:today];
        int currentYear  = [yearComponents year];
        for(int months = 0; months < 12; months++)
            NSLog(@"%@ %i",[[dateFormatter monthSymbols]objectAtIndex: months],currentYear);
    

    output will be :

    January 2013

    February 2013

    March 2013

    April 2013

    May 2013

    June 2013

    July 2013

    August 2013

    September 2013

    October 2013

    November 2013

    December 2013

    Edited : For Above output from current month Use following code :

     NSDateFormatter  *dateFormatter   = [[NSDateFormatter alloc] init];
    
        NSDate           *today           = [NSDate date];
        NSCalendar       *currentCalendar = [NSCalendar currentCalendar];
        NSDateComponents *yearComponents  = [currentCalendar components:NSYearCalendarUnit |    NSMonthCalendarUnit  fromDate:today];
        int currentYear  = [yearComponents year];
        int currentmonth=[yearComponents month];
        NSLog(@"current Month %d",currentmonth);
        for(int months = currentmonth - 1; months < 12; months++)
            NSLog(@"%@ %i",[[dateFormatter monthSymbols]objectAtIndex: months],currentYear);