Objective-c从星期一开始,而不是星期日

时间:2012-03-21 17:14:58

标签: objective-c nsdate dayofweek

我正在为欧洲市场制作应用程序的自定义日历视图。在一个函数中,我应该得到星期几的数字...我这样做,但它返回从星期日开始的星期几的数字。我应该怎么硬编码从星期一开始返回这个号码? 谢谢 以下是我到目前为止的情况:

-(int)getWeekDay:(NSDate*)date_
{
    NSLocale *frLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"fr_FR"];

    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    [gregorian setLocale:frLocale];
    NSDateComponents *comps = [gregorian components:NSWeekdayCalendarUnit fromDate:date_];
    int weekday = [comps weekday];

    NSLog(@"Week day is %i", weekday);
    return weekday;

}

2 个答案:

答案 0 :(得分:9)

您应该使用[NSCalendar setFirstWeekday:]来执行此操作。

答案 1 :(得分:4)

最好的方法是使用[NSCalendar setFirstWeekday:],正如约书亚在答案中所说的那样。

否则,您可以执行整数运算。 Vova的方法很简单:

if (weekday>1)
    weekday--; 
else 
    weekday=7;

下面的这个也有效,虽然它有点令人困惑:

int europeanWeekday = ((weekday + 5) % 7) + 1;