hGP*_*P5b 17 iphone objective-c ios4 ios5
我使用以下内容从NSDate获取周数:
[[calendar components: NSWeekCalendarUnit fromDate:date] week]
Run Code Online (Sandbox Code Playgroud)
不幸的是,我在不同的iOS版本中获得了不同的值.iOS 4.*和5返回的值相差1.有没有办法一致地检索周数?
小智 23
由于iOS5 NSCalender似乎默认定义为ISO 8601.您需要使用方法"setMinimumDaysInFirstWeek"设置日历以获得预期的周数结果.
[yourCalender setMinimumDaysInFirstWeek:4];
Run Code Online (Sandbox Code Playgroud)
在这种情况下,"4"表示星期四.
http://en.wikipedia.org/wiki/ISO_week_date "一年的第一周是包含一年中第一个星期四的一周."
我不知道为什么它在iOS5中没有被定义为"4"默认值.只是其中一个奇怪的"错误"我猜;)
是的,这将适用于iOS 4和5.
iOS5似乎有误,错误ID#10412573.
简介:iOS5 NSDateComponents周报告了NSWeekCalendarUnit和NSWeekOfYearCalendarUnit的错误周.
重现步骤:
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *date = [NSDate date];
NSLog(@"week: %i", [[calendar components: NSWeekCalendarUnit fromDate:date] week]);
NSLog(@"week: %i", [[calendar components: NSWeekOfYearCalendarUnit fromDate:date] weekOfYear]);
Run Code Online (Sandbox Code Playgroud)
预期结果:iOS4和iOS5上的同一周数.2011年11月8日,本周应为45周.
实际结果:iOS5上的相同周数.2011年11月8日,本周应为46周.
回归:iOS4是正确的,iOS5不正确.