簡體   English   中英

如何在所有iOS版本中始終如一地獲得NSDate的周數?

[英]How to get a week number from NSDate consistently in all iOS versions?

我使用以下內容從NSDate獲取周數:

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

不幸的是,我在不同的iOS版本中獲得了不同的值。 iOS 4. *和5返回的值相差1.有沒有辦法一致地檢索周數?

由於iOS5 NSCalender似乎默認定義為ISO 8601。 您需要使用方法“setMinimumDaysInFirstWeek”設置日歷以獲得預期的周數結果。

[yourCalender setMinimumDaysInFirstWeek:4];

在這種情況下,“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]);

預期結果:iOS4和iOS5上的同一周數。 2011年11月8日,本周應為45周。

實際結果:iOS5上的相同周數。 2011年11月8日,本周應為46周。

回歸:iOS4是正確的,iOS5不正確。

周編號由ISO 8601標准化

我打賭iOS5是正確的,並且已經為iOS4提交了一個錯誤。

一種可能的解決方案是添加修復iOS4錯誤的變通方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM