Recherche du premier jour de la semaine dépendant des parameters régionaux

Étant donné un NSDate , comment puis-je find le premier jour de la semaine de cette date, count tenu des parameters régionaux de l'user. Par exemple, j'ai entendu dire que certains pays traitent le lundi comme le premier jour de la semaine et que d'autres utilisent le dimanche. Je dois returnner le lundi précédent dans le premier cas mais le dimanche précédent dans le dernier cas.

Mon meilleur effort jusqu'à présent renvoie toujours le dimanche précédent, quels que soient les parameters appliqués:

 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]; 

Question bonus: sur iOS, quel paramètre entraîne cela? Est-ce le «format de la région»?

Essayez de changer:

 [components setWeekday:1]; 

à:

 [components setWeekday:[calendar firstWeekday]]; 

Vous devez également supprimer les composants NSYearForWeekOfYearCalendarUnit et NSWeekCalendarUnit .

Question bonus: "Format de région" devrait être le paramètre qui change le premier jour de la semaine.

Une façon plus intelligente pour le style ancien pour ceux qui ne veulent pas mettre le calendar en premier.

 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);