Получите все дни любого месяца с целью - PullRequest
16 голосов
/ 13 ноября 2009

На первый взгляд простой вопрос ... как я могу вернуть список дней для любого указанного месяца?

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

Я хочу использовать это, но замените today, скажем, январским месяцем, чтобы я мог вернуть все эти дни

Ответы [ 2 ]

60 голосов
/ 13 ноября 2009

Ответ Карла работает на 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);
2 голосов
/ 13 ноября 2009

Вы можете назначить свидание практически с любой строкой:

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

Тогда остальная часть вашего кода будет работать как есть, чтобы вернуть вам NSRange за количество дней в январе.

...