Ios 获取一系列NSDate与另一系列NSDate相交的天数
我在获取一系列NSDate与另一系列NSDate相交的天数时遇到问题 场景1:Ios 获取一系列NSDate与另一系列NSDate相交的天数,ios,nsdate,Ios,Nsdate,我在获取一系列NSDate与另一系列NSDate相交的天数时遇到问题 场景1: 主要范围:3月8日至6月8日 检查范围:4月8日至5月8日 那么相交的天数就是从4月8日到5月8日的天数 场景2: 主要范围:3月8日至6月8日 检查范围:2月8日至3月15日 那么相交的天数就是从3月8日到3月15日的天数 场景3: 主要范围:3月8日至6月8日 检查范围:5月19日至6月15日 那么相交的天数就是从5月19日到6月8日的天数 场景4: 主要范围:3月8日至6月8日 检查范围:3月1日至6月9日 那
主要范围:3月8日至6月8日
检查范围:4月8日至5月8日
那么相交的天数就是从4月8日到5月8日的天数 场景2:
主要范围:3月8日至6月8日
检查范围:2月8日至3月15日
那么相交的天数就是从3月8日到3月15日的天数 场景3:
主要范围:3月8日至6月8日
检查范围:5月19日至6月15日
那么相交的天数就是从5月19日到6月8日的天数 场景4:
主要范围:3月8日至6月8日
检查范围:3月1日至6月9日
那么相交的天数就是从3月8日到6月8日的天数 我尝试使用下面的代码,首先使用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;
}
您的方法只需要两个日期,因此您需要获得适当的两个日期来提供给该方法 假设它们相交: 要做到这一点,您需要做的就是将两个开始日期进行比较,然后将两个结束日期进行比较。最后的开始日期和最早的结束日期将控制交叉点的范围
NSDate* correctStartDate;
NSComparisonResult result = [startdate1 compare:startdate2];
if(result == NSOrderedDescending)
correctStartDate = startdate1;
else
correctStartDate = startdate2;
NSDate* correctEndDate;
NSComparisonResult result = [enddate1 compare:enddate2];
if(result == NSOrderedAscending)
correctEndDate = enddate1;
else
correctEndDate = enddate2;
然后获取使用您的方法的时间间隔
要检查它们是否相交,只需比较开始日期和结束日期。如果开始在结束之后,则它们不相交。您需要四个日期才能得到答案。你发布的方法只需要两个日期。请提供一个链接,指向你从中获得该代码的问题。