寻找一周的第一天的地点

给定一个NSDate ,给定用户的区域设置,我如何find该date的第一天。 例如,我听说有些国家星期一是星期一的第一天,有些则用星期天。 在第一种情况下,我需要返回前一个星期一,而在后一种情况下,则是前一个星期天。

无论应用的设备设置如何,我迄今所做的最大努力总是返回前一个星期日。

 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上,哪个设置驱动器? 这是'地区格式'吗?

尝试改变:

 [components setWeekday:1]; 

至:

 [components setWeekday:[calendar firstWeekday]]; 

您还应该删除NSYearForWeekOfYearCalendarUnitNSWeekCalendarUnit组件。

奖金问题:“地区格式”应该是改变一周的第一天的设置。

对于那些不想首先设定日历的人来说,这是一种更为古老的方式。

 NSDate *date = [NSDate dateWithTimeIntervalSince1970:1483620311.228]; NSLog(@"current date ===> : %@", date); NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; NSDate *previousMonday = [calendar nextDateAfterDate:date matchingUnit:NSCalendarUnitWeekday value:2 //use 1-7 for Sunday to Saturday week day. options:NSCalendarMatchNextTime | NSCalendarSearchBackwards]; NSLog(@"previousMonday date ===> : %@", previousMonday);