【发布时间】:2014-07-03 08:26:52
【问题描述】:
给定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];
额外问题:在 iOS 上,是哪个设置驱动的?是“区域格式”吗?
【问题讨论】:
-
另见 stackoverflow.com/questions/16876813/… 解决了同样的问题。
标签: ios objective-c cocoa-touch nsdate nsdatecomponents