2016-09-19 40 views
0

我將我的一些真正舊代碼從Objective C轉換爲Swift,並且碰到了這個怪物。我無法弄清楚我在這裏做了什麼。看着那個rangeOfUnit方法的文檔,我只剩下我的腦袋了。什麼是NSCalendar的rangeOfUnit:startDate:interval:forDate真的在做什麼?

看起來好像我只是找出這兩個日期之間有多少天,但這似乎是一個奇怪的方式來做到這一點真的

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

方法rangeOfUnit計算包含給定日期分別意味着午夜日曆單元(這裏day)的開始。指針fromDatetoDate包含返回的結果。 interval參數的指針將返回86400,即日曆單元的NSTimeInterval

NSCalendar有做要容易得多同樣的事情的方法:

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