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:@" "];
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).