自iOS8以来,不推荐使用NSDateComponents周. Apple建议使用weekOfMonth或weekOfYear,具体取决于上下文,但它们的工作方式不同.例如:
components1 = [calendar components:NSMonthCalendarUnit | NSWeekCalendarUnit | NSDayCalendarUnit fromDate:[self date7DaysAgo] toDate:[NSDate date] options:0];
components1返回month = 0,week = 1,day = 0,weekOfMonth和weekOfYear都等于2147483647(整数最大值).
components2 = [calendar components:NSMonthCalendarUnit | NSWeekCalendarUnit | NSDayCalendarUnit fromDate:[self date30DaysAgo] toDate:[NSDate date] options:0];
components2返回month = 1(我知道它取决于,但它只是一个例子),week = 0,weekOfMonth和weekOfYear都等于2147483647(整数最大值).
Week返回某段时间内的周数(如果是一周或多个),并且与一个月或一年中的一周的数量完全不同.苹果为什么建议使用它呢?
解决方法
使用NSWeekOfMonthCalendarUnit或NSWeekOfYearCalendarUnit代替NSWeekCalendarUnit.