如何获得目标c中当前的date?

我正在开发一个使用date,月份,年份的应用程序。 我想要当前的月份date,因为当前月份可以有28,29,30,31天。 我试图得到今年的几个月。 但我不知道上面的代码。 这是我的代码。

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++) { NSString *monthName = [NSString stringWithFormat:@"%@ %i",[[dateFormatter monthSymbols]objectAtIndex: months],currentYear]; NSLog(@"%@ %i",[[dateFormatter monthSymbols]objectAtIndex: months],currentYear); [monthArray addObject:monthName]; } 

为了得到一天,你可以NSDateComponents

 NSDate *date = [NSDate date]; NSCalendar *gregorian = [NSCalendar currentCalendar]; NSDateComponents *dateComponents = [gregorian components:(NSDayCalendarUnit|NSMonthCalendarUnit|NSYearCalendarUnit) fromDate:date]; NSInteger day = [dateComponents day]; 

你可以添加更多的组件单元,如你所需要的: NSMonthCalendarUnit,NSWeekdayCalendarUnit,NSYearCalendarUnit

可以使用NSCalendar及其rangeOfUnit:inUnit:forDate方法。 例如,获取当月的天数:

 NSCalendar *cal = [NSCalendar currentCalendar]; NSRange range = [cal rangeOfUnit:NSDayCalendarUnit inUnit:NSMonthCalendarUnit forDate:[NSDate date]]; NSUInteger numberOfDaysInMonth = range.length;