鉴于参考日期,我需要找到以下说'星期三'。从参考NSDate获取一周的第二天的NSDate?
要明确一点,如果参考日期是周二说,那么它应该从星期三返回相同的星期。
如果参考日期是星期三或更晚,那么它需要从下一个星期三返回星期。
重要的是它不会在参考日期之后返回星期三。
我一直在寻找使用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语句来检查未来哪一个,但是这看起来像很多代码来做一件简单的事情。
有没有更好的方法?
任何帮助,将不胜感激。
更新
似乎设置平日实际上并不影响由NSCalendar的dateComponents:
方法返回的日期。我上面的示例代码返回相同的日期,无论星期几设置什么。
所以现在我更难倒了。
如果日期过去的话加7天怎么样,否则就放任它吧? – tazzix
是的,这基本上就是我在做的事情,但我很想知道他们是否是一种更好的方式,说'让我下个星期三',而不必写很多额外的逻辑。我希望有一些我错过了NSDateComponents类。可能没有那么好,我会按照我的方式去做。 – Camsoft