NSDateComponents周在iOS8上的工作方式不同

自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.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...