什么是NSCalendar⦥ rangeOfUnit:startDate:interval:forDate真的在做什么?

时间:2016-09-19 07:11:09

标签: ios objective-c nsdate nscalendar

我将一些非常古老的代码从Objective C转换为Swift,然后我遇到了这个怪物。我无法弄清楚我在这里做了什么。看看那个rangeOfUnit方法的文档,我一直在挠头。

我似乎只知道这两个日期之间存在多少天,但这似乎是真的奇怪的方式。

NSDate *fromDate, *toDate;
[self.calendar rangeOfUnit:NSCalendarUnitDay startDate:&fromDate interval:0 forDate:event.startDate];
[self.calendar rangeOfUnit:NSCalendarUnitDay startDate:&toDate interval:0 forDate:event.endDate];

NSInteger difference = labs([self.calendar components:NSCalendarUnitDay fromDate:fromDate toDate:toDate options:0].day) + 1;

1 个答案:

答案 0 :(得分:0)

方法rangeOfUnit计算包含给定日期的日历单位的开头(此处为day),这意味着午夜。指针fromDatetoDate包含返回的结果。 interval参数的指针将返回86400,即日历单位的NSTimeInterval

NSCalendar有一种方法可以更轻松地完成同样的事情:

NSDate *fromDate = [self.calendar startOfDayForDate:event.startDate];