给定一个参考日期,我需要找到下面的“星期三”。
需要明确的是,如果参考日期是星期二,那么它应该从同一周返回星期三。
如果参考日期是星期三或更晚,则需要从下周返回下一个星期三。
重要的是它不会返回参考日期之后的星期三。
我一直在考虑使用NSDateComponents
但不确定如何获得必须始终在未来的一周中的第二天。
这是我到目前为止所拥有的:
NSDate *referenceDate = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *dateComponents = [calendar components:(NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit) fromDate:referenceDate];
[dateComponents setWeekday:4]; // Wednesday
NSDate *followingWednesday = [calendar dateFromComponents:dateComponents];
虽然这段代码没有区分同一周过去的星期三或下一个星期三,但我的问题是存在的。
我知道我可以生成两个日期,一个来自本周,一个来自下周,然后使用 if 语句检查哪个是未来,但这似乎需要很多代码来做一件简单的事情。
有没有更好的办法?
任何帮助,将不胜感激。
更新
似乎设置工作日实际上并不影响dateComponents:
NSCalendar 方法返回的日期。无论工作日设置什么,我上面的示例代码都会返回相同的日期。
所以现在我更难过了。