【发布时间】:2014-05-08 15:11:08
【问题描述】:
我在获取一个 NSDates 范围与另一个 NSDates 范围相交的天数时遇到问题。
场景1:
主要范围:March8 - June8
检查范围:April8 - May8
那么相交的天数就是 April8 - May8 的天数
场景2:
主要范围:March8 - June8
检查范围:Feb8 - March15
那么相交的天数就是 March8 - March15 的天数
场景3:
主要范围:March8 - June8
检查范围:May19 - June15
那么相交的天数就是May19-June8的天数
场景4:
主要范围:March8 - June8
检查范围:March1 - June9
那么相交的天数就是从 March8 到 June8 的天数
我尝试通过首先使用 startdate1(要检查的范围)和 startdate2(主要范围)来使用下面的代码。如果是肯定的,我会包括,否则我不会。 然后使用 enddate1(检查范围)和 enddate2(主要范围)。如果是肯定的,我会包括,否则我不会。 然后总结所有正值。 这个解决方案是我从其中一篇文章中读到的,但看起来不正确。
+ (NSInteger)daysBetweenTwoDates:(NSDate *)fromDateTime andDate:(NSDate*)toDateTime
{
NSDate *fromDate;
NSDate *toDate;
NSCalendar *calendar = [NSCalendar currentCalendar];
[calendar rangeOfUnit:NSDayCalendarUnit startDate:&fromDate interval:NULL forDate:fromDateTime];
[calendar rangeOfUnit:NSDayCalendarUnit startDate:&toDate interval:NULL forDate:toDateTime];
NSDateComponents *difference = [calendar components:NSDayCalendarUnit fromDate:fromDate toDate:toDate options:0];
return [difference day] + 1;
}
【问题讨论】:
-
您需要四个日期才能得到答案。您发布的方法只需要两个日期。
-
提供一个链接,指向您从中获得该代码的问题。