我将一些非常古老的代码从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;
答案 0 :(得分:0)
方法rangeOfUnit
计算包含给定日期的日历单位的开头(此处为day
),这意味着午夜。指针fromDate
和toDate
包含返回的结果。 interval
参数的指针将返回86400,即日历单位的NSTimeInterval
。
NSCalendar
有一种方法可以更轻松地完成同样的事情:
NSDate *fromDate = [self.calendar startOfDayForDate:event.startDate];