4

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

-(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;

}
4

2 回答 2

9

你应该使用[NSCalendar setFirstWeekday:]来做到这一点。

于 2012-03-21T17:32:19.233 回答
4

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

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

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

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

int europeanWeekday = ((weekday + 5) % 7) + 1;
于 2012-03-21T17:18:37.580 回答