查找依赖于区域设置的第一天

Ben*_*ard 4 cocoa-touch objective-c nsdate nsdatecomponents ios

给定一个NSDate,如何根据用户的区域设置找到该日期的第一天.例如,我听说有些国家将星期一视为一周的第一天,其他国家则使用星期日.我需要在第一种情况下返回前一个星期一,而在后一种情况下返回前一个星期日.

无论应用何种设备设置,我到目前为止的最佳努力始终返回前一个星期日:

NSCalendar *calendar = [NSCalendar currentCalendar];
[calendar setLocale:[NSLocale currentLocale]];
NSDateComponents *components = [calendar components:NSYearForWeekOfYearCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekCalendarUnit | NSWeekdayCalendarUnit fromDate:originalDate];
[components setWeekday:1];
NSDate *firstDayOfWeek = [calendar dateFromComponents:components];
Run Code Online (Sandbox Code Playgroud)

奖金问题:在iOS上,哪个设置驱动这个?它是'地区格式'吗?

rma*_*ddy 5

尝试改变:

[components setWeekday:1];
Run Code Online (Sandbox Code Playgroud)

至:

[components setWeekday:[calendar firstWeekday]];
Run Code Online (Sandbox Code Playgroud)

您还应该删除NSYearForWeekOfYearCalendarUnitNSWeekCalendarUnit组件.

红利问题:"区域格式"应该是更改一周中第一天的设置.