2012-03-21 10 views
3

ヨーロッパ市場向けのカスタムカレンダービューを作成しています。関数では、曜日の番号を取得する必要があります...私はそうですが、日曜日から始まる曜日の数を返します。月曜日からこの番号を返すにはどうすればいいですか?ここで おかげ は、私がこれまで持っているものです。Objective-c月曜日から始まる週の曜日を取得します。日曜日はありません。

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

これを行うための最善の方法は、ヨシュアは彼の答えに言ったように、[NSCalendar setFirstWeekday:]を使用することです。

それ以外の場合は、整数演算を行うことができます。 Vovaの方法は簡単です。

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

それは少し混乱だが、以下のこの1つは、あまりにも動作します:

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

これは、日曜日を0とします...? – MechEthan

+0

システムのローカル設定に依存しません。 –

+1

はい、よりよい解決策は、条件を使用することです(if weekday> 1){weekday--; } else weekday = 7; –

関連する問題