每月的第一天的工作日

我需要得到这个月的第一天的工作日。 例如,2013年9月的第一天是星期天。

首先,获取本月的第一天(例如):

NSDate *today = [NSDate date]; NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *components = [gregorian components:(NSEraCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit) fromDate:today]; components.day = 1; NSDate *firstDayOfMonth = [gregorian dateFromComponents:components]; 

然后使用NSDateFormatter在星期几打印它:

 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"EEEE"]; NSLog(@"%@", [dateFormatter stringFromDate:firstDayOfMonth]); 

PS也看看date格式模式

这是获得当月第一天的周日名称的解决scheme

 NSDateComponents *weekdayComps = [[NSDateComponents alloc] init]; weekdayComps = [calendar.currentCalendar components:calendar.unitFlags fromDate:calendar.today]; weekdayComps.day = 1; NSDateFormatter *weekDayFormatter = [[NSDateFormatter alloc]init]; [weekDayFormatter setDateFormat:@"EEEE"]; NSString *firstweekday = [weekDayFormatter stringFromDate:[calendar.currentCalendar dateFromComponents:weekdayComps]]; NSLog(@"FIRST WEEKDAY: %@", firstweekday); 

对于周日指数,使用这个

 NSDate *weekDate = [calendar.currentCalendar dateFromComponents:weekdayComps]; NSDateComponents *components = [calendar.currentCalendar components: NSWeekdayCalendarUnit fromDate: weekDate]; NSUInteger weekdayIndex = [components weekday]; NSLog(@"WEEKDAY INDEX %i", weekdayIndex); 

如果需要,您还可以增加或减less月份。

根据您需要的输出,您可以使用NSDateFormatter (因为它已经说过了),或者您可以使用NSDateComponents类。 NSDateFormatter会给你一个string表示, NSDateComponents会给你整数值。 方法weekday可以做你想要的。

 NSDateComponents *components = ...; NSInteger val = [components weekday];