我希望在当前日期之后获得下周一的日期。
所以如果今天的日期是2013-08-09(星期五),那么我想得到2013-08-12的日期。
我该怎么做?
答案 0 :(得分:32)
这段代码应该得到你想要的。它只是计算星期一的天数,并从当前日期开始附加。
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;
更改为{{1}记住sunday = 1,monday = 2 ...
答案 1 :(得分:5)
您可以使用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];
沿着这些方面的某些东西可以起作用(盲目输入)