计算日期之间的天数,忽略某些工作日

时间:2015-07-16 22:00:50

标签: objective-c cocoa nsdate nscalendar

我正在开发一个计划应用程序,其中一部分是在给定计划中每天重复的事件。这个时间表只是“活跃的”#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或朋友)实现此方法?

感谢。

0 个答案:

没有答案