1

我想知道我怎样才能列出从星期一到星期日的日子......

我这样做了:

- (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'sweekdaySymbols和朋友(用于短名称等)

于 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 回答