我正在开发一个计划应用程序,其中一部分是在给定计划中每天重复的事件。这个时间表只是“活跃的”#39;在某些日子里 - 把它想象成一个工作周,星期六和星期日没有任何事情发生。
我想计算两个日期之间的连续天数,不包括某些工作日。我有一个使用NSCalendar
执行此操作的方法,忽略排除的日期,但没有看到任何方法(或相关类)允许我忽略某些日子。
+ (NSInteger) OKDaysBetweenDate:(nonnull NSDate *) fromDateTime
andDate:(nonnull NSDate *) toDateTime {
NSDate *fromDate;
NSDate *toDate;
NSCalendar *calendar = [NSCalendar currentCalendar];
[calendar rangeOfUnit:NSCalendarUnitDay startDate:&fromDate
interval:NULL forDate:fromDateTime];
[calendar rangeOfUnit:NSCalendarUnitDay startDate:&toDate
interval:NULL forDate:toDateTime];
NSDateComponents *difference = [calendar components:NSCalendarUnitDay
fromDate:fromDate toDate:toDate options:0];
return [difference day];
}
我想到的一种可能性是检查两个日期之间的周数,将其乘以每周排除的天数,并从最终结果中减去它,但这似乎并不特别干净。我
是否有更好的,更多的Cocoa-y(可能使用NSCalendar
或朋友)实现此方法?
感谢。