在所有国家/地区,星期日符号列表是否始终以星期日开始?

ppa*_*ica 7 cocoa-touch locale ios nslocale swift

我有这个代码:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSMutableArray *daysNames = [NSMutableArray arrayWithArray:dateFormatter.weekdaySymbols];
NSLog(@"daysNames = %@", daysNames);
Run Code Online (Sandbox Code Playgroud)

它输出:

daysNames = (
    Sunday,
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday
)
Run Code Online (Sandbox Code Playgroud)

我的问题是:

如果用户位于美国以外的其他国家/地区,让我们说法国或俄罗斯,阵列是否仍然从星期日(而不是星期一)开始,或者我不应该依赖于此?

事情是我设置闹钟日.在视觉上,用户从表视图中选择,该视图在第一行中始终具有星期一.如果日期设置与否,我会根据事实在NSMutableArray中保留0或1.如果daysNames [0]总是对应于星期日,我可以轻松地将所有元素向右移动一个位置,并且一切都将正确映射,否则当周星期一开始而不是星期日时,我还会遇到更多令人头疼的问题.

这是我为此写的完整代码(在美国它运作完美):

// 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:@" "];
Run Code Online (Sandbox Code Playgroud)

mic*_*nan 6

不确定是否理解,但这是建议的解决方案,在 Swift 中:

let shortWeekdaySymbols = Calendar.current.shortWeekdaySymbols

let localizedWeekdays: [String] = Array(shortWeekdaySymbols[Calendar.current.firstWeekday - 1 ..< Calendar.current.shortWeekdaySymbols.count] + shortWeekdaySymbols[0 ..< Calendar.current.firstWeekday - 1])
Run Code Online (Sandbox Code Playgroud)

wherelocalizedWeekdays是一个数组,其中包含 CalendarweekdaySymbols属性中包含的所有工作日的本地化顺序。


Tom*_*mmy 5

是。周日始终是该列表中第一位的工作日。您可以进行询问,NSCalendar以找出一周中该列表在哪个位置开始(美国人为星期日,欧洲人为星期一,等等)。