每月的第一天的工作日
我需要得到这个月的第一天的工作日。 例如,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];