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:@" "];
I just put my logic for Swift 4.
let dateFormatter = DateFormatter()
var weekDays: [String] = dateFormatter.weekdaySymbols
if weekDays[0] == "Sunday" {
weekDays.append(weekDays[0])
weekDays.remove(at: 0)
}
print(weekDays)
Check if first day is Sunday then first append "Sunday" in the Array list and remove it from first index.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With