OGeek|极客世界-中国程序员成长平台

标题: ios - 将持续数天的 NSDate 拆分为几个跨度 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 14:50
标题: ios - 将持续数天的 NSDate 拆分为几个跨度

我有 2 个定义跨度的 NSDates,可以这样设置它们

spanA: 12:00 today
spanB: 12:00 tomorrow

这等于 24 小时,但我需要创建两个范围而不是一个,这样跨度就不会延伸到午夜。上面示例的结果如下所示:

spanA: 12:00 today
spanB: 23:59 today

spanC: 00:01 tomorrow
spanD: 12:00 tomorrow

我不知道该怎么做。我想出了一个使用这样的函数的想法:

- (NSInteger)daysBetweenDateNSDate *)fromDateTime andDateNSDate *)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];
}

它返回跨度跨越的天数,或者换句话说:所需的跨度数。然后我可以例如循环循环天数并添加一些逻辑来创建必要的跨度。

我将其用作跨度的结构:

typedef struct
{
NSTimeInterval start;
NSTimeInterval end;
} span;

最好的方法是什么?



Best Answer-推荐答案


由于除了可能的第一个和最后一个跨度之外的所有跨度都是相同的全天跨度,您可以使用此算法:

关于ios - 将持续数天的 NSDate 拆分为几个跨度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29318764/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4