我正在尝试从今天的日期计算日期。我想要的日期是下个月,从今天开始的第 n 周序号和第 n 个工作日。我正在使用下面的代码来做到这一点。下面代码的结果是错误的。如果假设今天是 2013 年 3 月 28 日,我正在寻找下个月第三个星期六的日期,那么..我期待看到 2013 年 4 月 20 日。相反,我看到了 2013 年 4 月 23 日。我无法调试问题。请让我知道我做错了什么。感谢帮助。
NSDate *todayDate = [[NSDate alloc] init]
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *dateComponents = [gregorian components:(NSYearCalendarUnit | NSMonthCalendarUnit |NSDayCalendarUnit| NSWeekCalendarUnit | NSWeekdayOrdinalCalendarUnit | NSWeekdayCalendarUnit | NSWeekOfYearCalendarUnit ) fromDate:todayDate];
NSUInteger todayWeekdayValue = [dateComponents weekday];
NSUInteger todayWeekdayOrdinal = [dateComponents weekdayOrdinal];
// recurringWeekday / recurringMonthDay get passed on from calling function
NSUInteger nextWeekdayValue = [self getWeekdayValueForWeekdayName:recurringWeekday];
NSUInteger nextWeekdayOrdinal = recurringMonthDay;
[dateComponentsToAdd setMonth:1];
[dateComponentsToAdd setWeekday:nextWeekdayValue - todayWeekdayValue];
[dateComponentsToAdd setWeekdayOrdinal:nextWeekdayOrdinal - todayWeekdayOrdinal];
NSDate *nextDate = [gregorian dateByAddingComponents:dateComponentsToAdd toDate:todayDate options:0];