【问题标题】:List of days in Objective C目标 C 中的日期列表
【发布时间】:2012-09-15 19:01:46
【问题描述】:

我想知道如何列出从星期一到星期日的日子...

我这样做了:

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

    }

但它显示的是从今天开始的几天......如何解决这个问题或更简单?

谢谢!!

【问题讨论】:

    标签: objective-c xcode macos cocoa nsdate


    【解决方案1】:

    使用NSDateFormatterweekdaySymbols 和朋友(简称等)

    【讨论】:

    • 但是周中的非公历日呢? weekdaySymbols 数组是否按星期几编号? (这可能不是因为即使在公历中,星期几也从 1 开始)。
    • @adib - NSDateFormatter 使用 NSCalendar,您是否尝试将其设置为非公历并查看 weekdaySymbols 返回的内容?
    【解决方案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]。公历一周的第一天是星期日。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-15
      • 2018-09-17
      相关资源
      最近更新 更多