我使用以下代码从NSDate获取周数:
[[calendar components: NSWeekCalendarUnit fromDate:date] week]
不幸的是,我在不同的iOS版本中得到了不同的值。iOS 4.*和5返回的值相差1。有什么方法可以一致地检索周数吗?
发布于 2011-11-18 04:38:20
因为iOS5 NSCalender dosent似乎相应地将ISO8601定义为默认值。你需要用"setMinimumDaysInFirstWeek“方法设置你的日历,以获得预期的周数结果。
[yourCalender setMinimumDaysInFirstWeek:4];
"4“在这种情况下表示星期四。
http://en.wikipedia.org/wiki/ISO_week_date“一年的第一周是包含一年的第一个星期四的一周。”
我不知道为什么在iOS5中它没有被定义为"4“作为默认值。我猜只是那些奇怪的“虫子”中的一个;)
是的,这将在iOS 4和5中工作。
发布于 2011-11-09 01:02:34
错误,iOS5 ID# 10412573。
摘要: iOS5 NSDateComponents week使用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]);
预期结果: iOS4和iOS5的周数相同。对于2011年11月8日,每周应为45周。
实际结果: iOS5上的星期数相同。对于2011年11/8/周,应该是46周。
回归: iOS4是正确的,iOS5是错误的。
发布于 2011-11-07 22:47:07
https://stackoverflow.com/questions/8037897
复制相似问题