【发布时间】:2015-03-28 15:14:30
【问题描述】:
我有 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)daysBetweenDate:(NSDate *)fromDateTime andDate:(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];
}
它返回跨度跨越的天数,或者换句话说:所需的跨度数。然后我可以例如循环循环天数并添加一些逻辑来创建必要的跨度。
我将其用作跨度的结构:
typedef struct
{
NSTimeInterval start;
NSTimeInterval end;
} span;
最好的方法是什么?
【问题讨论】:
标签: ios objective-c nsdate timespan nsdatecomponents