为了得到星期几,我使用:

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
NSArray *weekdays = [dateFormatter shortWeekdaySymbols];

工作日为我提供了一个包含日期名称的数组,但它从星期日开始。由于某些原因,我希望此数组在星期一或星期日开始,具体取决于设备的本地化设置。

有办法吗?

最佳答案

您可以从具有当前语言环境的-firstWeekday对象的NSCalendar方法获取当前语言环境的第一个工作日的从1开始的索引。然后,您可以相应地修改周名称数组:

// get week day names array
NSArray *weekdays = self.shortWeekdaySymbols;

// adjust array depending on which weekday should be first
NSUInteger firstWeekdayIndex = [NSCalendar currentCalendar].firstWeekday - 1;
if (firstWeekdayIndex) {

    NSRange firstRange = NSMakeRange(firstWeekdayIndex, weekdays.count - firstWeekdayIndex);
    NSRange lastRange = NSMakeRange(0, firstWeekdayIndex);

    NSArray *firstArray = [weekdays subarrayWithRange:firstRange];
    NSArray *lastArray  = [weekdays subarrayWithRange:lastRange];

    weekdays = [firstArray arrayByAddingObjectsFromArray:lastArray];
}

NSLog(@"%@", weekdays);

我没有iPhone SDK,但是AFAIK这些API应该在那里都可用,并且行为与OS X相同。

关于iphone - 在NSDateFormatter中更改一周的第一天,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3626149/

10-14 20:07