Это похоже на ответ @ Eiko, за исключением того, что оно более корректно при работе с такими вещами, как летнее время, месяцы, у которых нет 31 дня, и т. Д .:
NSDateComponents *components = [[[NSDateComponents alloc] init] autorelease];
[components setYear:2011];
[components setMonth:7];
[components setDay:1];
NSCalendar *gregorianCalendar = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDate *startDate = [gregorianCalendar dateFromComponents:components];
NSRange rangeOfDays = [gregorianCalendar rangeOfUnit:NSDayCalendarUnit inUnit:NSMonthCalendarUnit forDate:startDate];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd"];
for (NSInteger i = 1; i <= NSMaxRange(rangeOfDays); ++i) {
[components setDay:i];
NSDate *date = [gregorianCalendar dateFromComponents:components];
yourLabel.text = [dateFormatter stringFromDate: date];
NSDateComponents *weekdayComponents = [gregorian components:NSWeekdayCalendarUnit fromDate:date];
int weekday = [weekdayComponents weekday];
yourLabel.textColor = weekday == 1 ? [UIColor redColor : blackColor];
}
[dateFormatter release];