首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在所有iOS版本中一致地从NSDate获取周数?

如何在所有iOS版本中一致地从NSDate获取周数?
EN

Stack Overflow用户
提问于 2011-11-07 22:34:42
回答 3查看 9.9K关注 0票数 17

我使用以下代码从NSDate获取周数:

代码语言:javascript
复制
[[calendar components: NSWeekCalendarUnit fromDate:date] week]

不幸的是,我在不同的iOS版本中得到了不同的值。iOS 4.*和5返回的值相差1。有什么方法可以一致地检索周数吗?

EN

回答 3

Stack Overflow用户

发布于 2011-11-18 04:38:20

因为iOS5 NSCalender dosent似乎相应地将ISO8601定义为默认值。你需要用"setMinimumDaysInFirstWeek“方法设置你的日历,以获得预期的周数结果。

代码语言:javascript
复制
[yourCalender setMinimumDaysInFirstWeek:4];

"4“在这种情况下表示星期四。

http://en.wikipedia.org/wiki/ISO_week_date“一年的第一周是包含一年的第一个星期四的一周。”

我不知道为什么在iOS5中它没有被定义为"4“作为默认值。我猜只是那些奇怪的“虫子”中的一个;)

是的,这将在iOS 4和5中工作。

票数 23
EN

Stack Overflow用户

发布于 2011-11-09 01:02:34

错误,iOS5 ID# 10412573。

摘要: iOS5 NSDateComponents week使用NSWeekCalendarUnit和NSWeekOfYearCalendarUnit报告了错误的一周。

重现步骤:

代码语言:javascript
复制
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是错误的。

票数 7
EN

Stack Overflow用户

发布于 2011-11-07 22:47:07

星期编号是由ISO 8601标准化的。

我敢打赌,iOS5是正确的,并且已经为iOS4提交了一个bug。

一种可能的解决方案是添加修复iOS4错误的解决方法。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8037897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档