【问题标题】:Get all days of any month with objective-c使用objective-c获取任何一个月的所有天数
【发布时间】:2009-11-13 19:24:58
【问题描述】:

一个看似简单的问题...如何返回任何指定月份的天数列表?

NSDate *today = [NSDate date]; //Get a date object for today's date
NSCalendar *c = [NSCalendar currentCalendar];
NSRange days = [c rangeOfUnit:NSDayCalendarUnit 
                       inUnit:NSMonthCalendarUnit 
                      forDate:today];

我基本上想使用它,但是将 today 替换为 1 月份,这样我就可以返回所有这些日子

【问题讨论】:

    标签: iphone objective-c nsdate


    【解决方案1】:

    Carl 的答案适用于 Mac。以下适用于 Mac 或 iPhone(那里没有dateWithNaturalLanguageString:)。

    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *components = [[[NSDateComponents alloc] init] autorelease];
    
    // Set your year and month here
    [components setYear:2015];
    [components setMonth:1];
    
    NSDate *date = [calendar dateFromComponents:components];
    NSRange range = [calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:date];
    
    NSLog(@"%d", (int)range.length);
    

    【讨论】:

    • 谢谢。原始海报没有具体说明,所以我不确定。
    • 是的……我的错。应该指定:(
    • 在这段代码中,闰年的二月会发生什么?
    • 鉴于您指定了为 rangeOfUnit:inUnit:forDate 方法设置上下文的日期,我认为它做了正确的事情(返回 1-29)。尝试并验证!
    • 请注意,上述代码中月份的范围是从 1 到 12,而不是从 0 到 11。
    【解决方案2】:

    您几乎可以使用任何字符串来创建日期:

    NSDate *date = [NSDate dateWithNaturalLanguageString:@"January"];
    

    然后,您的其余代码将按原样工作,以返回 NSRange 一月份的天数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-25
      • 1970-01-01
      • 2011-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多