在我的应用程序中,我需要获得下一年的月份名称和年份并存储在数组中。我的意思是假设今天的2012年9月,我需要月份名称和年份,直到2013年8月。
请告诉我如何获得月份和年份? Thanx提前
答案 0 :(得分:4)
将NSMonthCalendarUnit用于当前日历的components参数以获取当前月份的编号,例如9月为9月,然后为当年的NSYearCalendarUnit,例如然后在for循环中使用这些,它使用模数运算来回绕下一年。
如果for循环中的月份数小于当前月份,则使用当前年份加1作为下一年,否则使用当前年份。
请注意,使用NSMonthCalendarUnit时返回的月份数字从1开始,而monthSymbols的索引号从零开始。这意味着即使我们从9开始9月,我们从这个阵列得到的月份是10月,这是我们想要的下一个月。
/*
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++;
}
答案 1 :(得分: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];