1

MONDAY から SUNDAY までの曜日のリストを作成するにはどうすればよいでしょうか...

私はそうしました:

- (NSString *) stringWithDayNameOf:(int)day {
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"D"];
    NSDate *date = [dateFormat dateFromString:[NSString stringWithFormat:@"%i", day]];
    [dateFormat setDateFormat:@"eeee"];
    NSString* outer = [dateFormat stringFromDate:date];
    outer = [outer uppercaseString];

    return outer;

}


 for (int i = 1; i <= 7; i++) {

        NSLog(@"DAY: %@", [self stringWithDayNameOf:i]);

    }

しかし、今日からの日数が表示されます...それを修正する方法、または簡単にする方法は?

ありがとう!!

4

2 に答える 2

5

と友達を使用しNSDateFormatterますweekdaySymbols(短い名前などに)

于 2012-09-15T19:21:07.553 に答える
2

%D「曜日」ではなく「年間通算日」のフォーマット指定子です。(私が知る限り)誰もそのように日付を書いていないので、数字の曜日の指定子はありません。

NSDateComponents次を使用して日付を作成し、それをフォーマットする必要があります。

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"eeee"];
NSCalendar * cal = [NSCalendar currentCalendar];
NSUInteger numWeekdays = [cal maximumRangeOfUnit:NSWeekdayCalendarUnit].length;
NSDateComponents * comp = [[NSDateComponents alloc] init];
for( NSUInteger day = 1; day <= numWeekdays; day++ ){
    [comp setWeekday:day];
    [comp setWeek:0];
    NSDate * date = [cal dateFromComponents:comp];

    NSString * dayName = [dateFormat stringFromDate:date];

    NSLog(@"%@", dayName);
}

また、NSDateFormatterすでに曜日の名前を知っています: -[NSDateFormatter weekdaySymbols]. グレゴリオ暦の週の最初の日は日曜日です。

于 2012-09-15T19:22:48.323 に答える