Objective-c получает номер недели, начиная с понедельника, а не воскресенья - PullRequest
4 голосов
/ 21 марта 2012

Я делаю свой собственный вид календаря для приложения для европейского рынка. В функции я должен получить номер дня недели ... да, но он возвращает номер дня недели, начиная с воскресенья. Как мне жестко вернуть этот номер, начиная с понедельника? Спасибо Вот что у меня есть:

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

9 голосов
/ 21 марта 2012

Вы должны использовать [NSCalendar setFirstWeekday:] для этого.

4 голосов
/ 21 марта 2012

Лучший способ сделать это - использовать [NSCalendar setFirstWeekday:], как сказал Джошуа в своем ответе.

В противном случае вы можете сделать целочисленную арифметику. Метод Вовы прост:

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

Этот ниже тоже работает, хотя это немного сбивает с толку:

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