如何在所有iOS版本中一致地从NSDate获得一个星期数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (26)

我使用以下方法从NSDate获得一个星期数:

[[calendar components: NSWeekCalendarUnit fromDate:date] week]

不幸的是,在不同的IOS版本中,我得到了不同的值。由IOS 4返回的值。*其中5项相差1。是否有任何方法可以一致地检索周号?

提问于
用户回答回答于

iOS5似乎是错误的,Bug 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]);

预期结果:iOS4和iOS5上的同一周数。2011年11月8日,本周应该是45。

实际结果:iOS5上的同一周数。2011年11月8日,本周应该是46。

返回:iOS4正确,iOS5不正确。

用户回答回答于

由于iOS5 NSCalender剂量似乎是相应地将ISO 8601定义为默认值。你需要使用“setMinimumDaysInFirstWeek”方法设置你的日历才能获得预期的周编号结果。

[yourCalender setMinimumDaysInFirstWeek:4];

“4”意味着在这种情况下星期四。

扫码关注云+社区