NSCalendar, why does setting the firstWeekday doesn't effect calculation outcome?

cocoa, ios, nscalendar, nsdate

Solution

The behavior you see is correct. The weekday component is not affected by the firstWeekday property. If you have a date representing a sunday it will always be a sunday wether you start your week on that sunday or on monday. What this should affect is the week number in the week property of your date components.

Problem

i need to calculate the weekday for a given date, however, depending on the calendar a week can star on Monday and somwhere on Sunday so i wanted to set it, to start on Monday, using ``` [[NSCalendar currentCalendar] setFirstWeekday:2]; ``` however, the calculation outcome is the same ``` { [[NSCalendar currentCalendar] setFirstWeekday:1]; NSDateComponents *weekdayComponents = [[NSCalendar currentCalendar] components:(NSDayCalendarUnit | NSWeekdayCalendarUnit) fromDate:date]; NSInteger weekday = [weekdayComponents weekday] - 1; NSLog(@"%d", weekday); } { [[NSCalendar currentCalendar] setFirstWeekday:2]; NSDateComponents *weekdayComponents = [[NSCalendar currentCalendar] components:(NSDayCalendarUnit | NSWeekdayCalendarUnit) fromDate:date]; NSInteger weekday = [weekdayComponents weekday] - 1; NSLog(@"%d", weekday); } ``` returns same numbers, but why?

Original source

Related problems