Iphone 使用objective-c获取任意月份的所有天数

Iphone 使用objective-c获取任意月份的所有天数,iphone,objective-c,nsdate,Iphone,Objective C,Nsdate,一个看似简单的问题…如何返回指定月份的天数列表 NSDate *today = [NSDate date]; //Get a date object for today's date NSCalendar *c = [NSCalendar currentCalendar]; NSRange days = [c rangeOfUnit:NSDayCalendarUnit inUnit:NSMonthCalendarUnit

一个看似简单的问题…如何返回指定月份的天数列表

NSDate *today = [NSDate date]; //Get a date object for today's date
NSCalendar *c = [NSCalendar currentCalendar];
NSRange days = [c rangeOfUnit:NSDayCalendarUnit 
                       inUnit:NSMonthCalendarUnit 
                      forDate:today];

我基本上想使用它,但将
今天
替换为1月份,这样我就可以返回所有这些天

你可以用几乎任何字符串创建日期:

NSDate *date = [NSDate dateWithNaturalLanguageString:@"January"];

然后,代码的其余部分将按原样工作,返回1月份天数的
NSRange

卡尔的答案在Mac上有效。以下内容适用于Mac或iPhone(无
datewithnaturallanguagesting:
可在此处找到)


谢谢原来的海报没有具体说明,所以我不确定。是的……我的错。应该指定:(在这段代码中,闰年的二月会发生什么情况?如果您指定了一个日期来设置rangeOfUnit:inUnit:forDate方法的上下文,我假设它做了正确的事情(返回1-29)。请尝试并验证!请注意,在上面的代码中,月份的范围是1到12,而不是0到11。
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [[[NSDateComponents alloc] init] autorelease];

// Set your year and month here
[components setYear:2015];
[components setMonth:1];

NSDate *date = [calendar dateFromComponents:components];
NSRange range = [calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:date];

NSLog(@"%d", (int)range.length);