什么是NSCalendarCalendarUnit?

时间:2013-07-14 18:28:38

标签: nscalendar nsdatecomponents

这不是一个错字(至少不是我本人,无论如何。)

其中一个定义的NSCalendarUnitsNSCalendarCalendarUnit。任何人都可以解释这是什么或如何使用它?

例如,我想计算日期之间的天数,这可能发生在不同的时代。 Apple提供此代码用于查找某个时代内日期之间的天数(它在NSCalendar上实现为类别,因此self指的是NSCalendar):

NSInteger start = [self ordinalityOfUnit:NSDayCalendarUnit inUnit:NSEraCalendarUnit forDate:startDate];
NSInteger end   = [self ordinalityOfUnit:NSDayCalendarUnit inUnit:NSEraCalendarUnit forDate:endDate];
return end - start;

通过将NSEraCalendarUnit替换为NSCalendarCalendarUnit,是否正确修改此方法以接受不同时代的可能性?

1 个答案:

答案 0 :(得分:1)

NSDateComponents的实例可以包含日历。此组件已在iOS 4.0和OS X 10.7中添加:

  

iOS注意:在iOS 4.0及更高版本中,NSDateComponents对象可以包含日历,时区和日期对象。这允许将日期组件传递给方法或从方法返回,并保留其含义。

您可以将NSCalendarCalendarUnit传递给-[NSCalendar components:fromDate:],让其在退回的NSDateComponents中包含日历。

更新

如果要计算两个日期之间的天数,请使用-[NSCalendar components:fromDate:toDate:options:]。您可能需要先使用NSDate构建两个dateFromComponents:对象。