在我的应用程序中,我需要获取下一年的月份名称和年份并存储在数组中。我的意思是假设今天是 2012 年 9 月,我需要到 2013 年 8 月的月份名称和年份。
你能告诉我如何得到月份和年份吗?提前感谢
在我的应用程序中,我需要获取下一年的月份名称和年份并存储在数组中。我的意思是假设今天是 2012 年 9 月,我需要到 2013 年 8 月的月份名称和年份。
你能告诉我如何得到月份和年份吗?提前感谢
将 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++;
}
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];