Как получить номер недели от NSDate последовательно во всех версиях iOS? - PullRequest
17 голосов
/ 07 ноября 2011

Я использую следующее для получения номера недели из NSDate:

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

К сожалению, я получаю разные значения в разных версиях iOS. Значения, возвращаемые iOS 4. * и 5, отличаются на 1. Можно ли последовательно получить номер недели?

Ответы [ 3 ]

23 голосов
/ 18 ноября 2011

Поскольку iOS5 NSCalender, похоже, определяется согласно ISO 8601 по умолчанию.Вам нужно установить свой календарь с помощью метода "setMinimumDaysInFirstWeek", чтобы получить ожидаемый результат номера недели.

[yourCalender setMinimumDaysInFirstWeek:4];

"4" означает в этом случае четверг.

http://en.wikipedia.org/wiki/ISO_week_date "Theпервая неделя года - это неделя, содержащая первый четверг года. "

Я не знаю, почему в iOS5 по умолчанию она не определена как" 4 ".Просто одна из тех странных «ошибок», я думаю;)

И да, это будет работать как в iOS 4, так и в 5.

7 голосов
/ 08 ноября 2011

iOS5 выглядит неправильно, идентификатор ошибки # 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.Для 08.11.2011 неделя должна быть 45.

Фактические результаты: тот же номер недели на iOS5.Для 08.11.2011 неделя должна быть 46.

Регрессия: iOS4 верна, iOS5 неверна.

0 голосов
/ 07 ноября 2011

Недельная нумерация стандартизирована с помощью ISO 8601 .

Могу поспорить, что iOS5 верна и что ошибка для iOS4 была подана.добавьте обходной путь, который исправляет ошибку iOS4.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...