Does the weekdaySymbol list always start with Sunday in any country?
cocoa-touch, ios, locale, nslocale, swift
Solution
Yes. Sunday is always the weekday that comes first in that list. You can interrogate `NSCalendar` to find out what position in that list the week is considered to start on (Sunday for Americans, Monday for Europeans, etc).
Problem
I have this code: ``` NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; NSMutableArray *daysNames = [NSMutableArray arrayWithArray:dateFormatter.weekdaySymbols]; NSLog(@"daysNames = %@", daysNames); ``` it outputs: ``` daysNames = ( Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday ) ``` My question is: If the user is in a country other than US, let's say France or Russia, will the array still start with Sunday (not Monday), or should I not rely on this? The thing is I set alarm days. Visually, the user chooses from a table view, which always has Monday in the first row. And I keep 0 or 1 in an NSMutableArray based on the fact if the day is set or not. If daysNames[0] always corresponds to Sunday, I can easily shift all the elements one position to the right, and everything will map correctly, otherwise I have some more headaches dealing with one more case when week starts with Monday, not Sunday. This is the full code I wrote for this (in United States it works perfectly): ``` // Set the short days names NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; NSMutableArray *daysNames = [NSMutableArray arrayWithArray:dateFormatter.weekdaySymbols]; NSLog(@"daysNames = %@", daysNames); // daysNames will become @"SUN MON TUE WED THU FRI SAT"; for (NSInteger i = 0; i < daysNames.count; i++) { NSUInteger length = ((NSString *)daysNames[i]).length; if (length > 3) { length = 3; } daysNames[i] = [daysNames[i] substringToIndex:length].uppercaseString; } NSString *sundayShortName = daysNames[0]; // daysNames will become @"MON TUE WED THU FRI SAT SUN"; for (NSInteger i = 1; i < daysNames.count; i++) { daysNames[i - 1] = daysNames[i]; } daysNames[daysNames.count - 1] = sundayShortName; NSMutableArray *alarmDaysShortNames = [NSMutableArray array]; for (NSInteger i = 0; i < alarm.alarmDays.count; i++) { if ([alarm.alarmDays[i] boolValue] == YES) { [alarmDaysShortNames addObject:daysNames[i]]; } } alarmCell.alarmDaysLabel.text = [alarmDaysShortNames componentsJoinedByString:@" "]; ```