NSDateComponents
week
устарел с iOS8. Apple предлагает использовать weekOfMonth
или weekOfYear
вместо этого, в зависимости от контекста, но они работают по-другому. Например:NSDateComponents неделя работает по-разному на iOS8
components1 = [calendar components:NSMonthCalendarUnit | NSWeekCalendarUnit | NSDayCalendarUnit
fromDate:[self date7DaysAgo]
toDate:[NSDate date]
options:0];
деталей1 возвращает месяц = 0, неделя = 1, день = 0 и weekOfMonth
weekOfYear
оба равны (целое 2147483647 максимального значения).
components2 = [calendar components:NSMonthCalendarUnit | NSWeekCalendarUnit | NSDayCalendarUnit
fromDate:[self date30DaysAgo]
toDate:[NSDate date]
options:0];
components2 возвращает месяц = 1 (я знаю, что это зависит, но его просто пример), неделя = 0, день = 0, weekOfMonth
weekOfYear
и оба равны 2147483647 (целое максимальное значение).
Week
возвращает количество недель в течение некоторого периода (если это была неделя или несколько), и это полностью отличается от числа недель в месяце или году. Почему Apple предложила использовать это вместо этого?
Что такое метод date7DaysAgo и date30DaysAgo? – Apurv
Дата 7 или 30 дней назад. Это может быть, например: '[[Дата NSDate] dateByAddingTimeInterval: -60 * 60 * 24 * 7] (Я знаю, что из-за летнего времени или чего-то другого он может отличаться, но опять же, это просто пример). – KlimczakM
Если вы действительно хотите посмотреть документацию, NSWeekCalendarUnit «Устарел в iOS 8.0». (Впрочем, странно, так же как и все остальные единицы.) –