我想获取当前日期之后的下周一的日期。
所以如果今天的日期是 2013 年 8 月 9 日(星期五),那么我想得到日期 2013 年 8 月 12 日。
我怎样才能做到这一点?
我想获取当前日期之后的下周一的日期。
所以如果今天的日期是 2013 年 8 月 9 日(星期五),那么我想得到日期 2013 年 8 月 12 日。
我怎样才能做到这一点?
这段代码应该得到你想要的。它只是计算从星期一开始的天数并将其从当前日期附加。
NSDate *now = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [calendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekCalendarUnit | NSWeekdayCalendarUnit fromDate:now];
NSUInteger weekdayToday = [components weekday];
NSInteger daysToMonday = (9 - weekdayToday) % 7;
NSDate *nextMonday = [now dateByAddingTimeInterval:60*60*24*daysToMonday];
未经测试,但应该可以工作,并且不用担心更改日历的第一个日期。
它甚至可以很容易地适应一周中的每一天,只需将9
内部更改(9 - weekdayToday) % 7;
为7 + weekDayYouWant
,记住星期日 = 1,星期一 = 2...
您可以使用传递正确启动对象的NSCalendar
方法dateFromComponents:
NSDateComponents
NSDateComponents *components = [[NSCalendar currentCalendar] components: NSYearCalendarUnit | NSWeekOfYearCalendarUnit fromDate:[NSDate date]];
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setWeekOfYear:[components weekOfYear] + 1];
[comps setWeekday:1];
[comps setYear:[components year]];
NSCalendar *calendar = [NSCalendar currentCalendar];
[calendar setFirstWeekday:2]; //This needs to be checked, which day is monday?
NSDate *date = [calendar dateFromComponents:comps];
这些方面的东西可以工作(盲目输入)