0

在我的应用程序中,我需要获取下一年的月份名称和年份并存储在数组中。我的意思是假设今天是 2012 年 9 月,我需要到 2013 年 8 月的月份名称和年份。

你能告诉我如何得到月份和年份吗?提前感谢

4

2 回答 2

4

将 NSMonthCalendarUnit 用于当前日历的 components 参数,以获取当前月份的编号,例如 9 月,然后 NSYearCalendarUnit 为当年,例如 2012。然后在使用模数运算的 for 循环中使用这些来环绕到下一年。

如果 for 循环中的月份数小于当前月份,则使用当前年份加 1 作为下一年,否则使用当前年份。

请注意,使用 NSMonthCalendarUnit 时返回的月份编号从 1 开始,而 monthSymbols 的索引编号从 0 开始。这意味着即使我们从九月的 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++;
}
于 2012-09-17T16:40:33.953 回答
1

NSDateFormatter 是任何类型的日期(NSDate)格式化等的关键

int monthNumber = 09;   //September
NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease];
NSString *monthName = [[df monthSymbols] objectAtIndex:(monthNumber-1)];

打印日期如 2012 年 9 月 17 日

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateStyle:NSDateFormatterLongStyle]; 
[df setTimeStyle:NSDateFormatterNoStyle];  
NSString *dateString = [df stringFromDate:[NSDate date]]; 
[df release];
于 2012-09-17T16:06:50.363 回答