使用objective-c获取任何月份的所有日子

时间:2009-11-13 19:24:58

标签: 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 
                      forDate:today];

我基本上想要使用它,但用1月份的today替换,所以我可以返回所有那些日子

2 个答案:

答案 0 :(得分:60)

Carl的回答适用于Mac。以下适用于Mac或iPhone(此处没有dateWithNaturalLanguageString:)。

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);

答案 1 :(得分:2)

您可以使用几乎任何字符串来创建日期:

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

然后,您的其余代码将按原样运行,以便为您提供1月份天数的NSRange