gpt4 book ai didi

ios - 获取一系列 NSDates 与另一个 NSDates 范围相交的天数

转载 作者:行者123 更新时间:2023-11-28 22:07:45 28 4
gpt4 key购买 nike

我在获取一系列 NSDates 与另一个 NSDates 范围相交的天数时遇到问题。

场景 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日的天数

我尝试通过首先使用 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;

然后获取使用您的方法的天数。

要检查它们是否相交,只需比较开始日期和结束日期。如果起点在终点之后,则它们不相交。

关于ios - 获取一系列 NSDates 与另一个 NSDates 范围相交的天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23545712/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com