每个月的每一天的 NSDate

NSDate for each day of month

我浏览了 Whosebug,但 none 的解决方案效果不佳。 我想在一个月中生成 NSDate 天数数组,这是我正在使用的代码(现在硬编码年和月):

NSCalendar *c = [NSCalendar currentCalendar];
NSRange days = [c rangeOfUnit:NSCalendarUnitDay
                       inUnit:NSCalendarUnitMonth
                      forDate:today];

for (int i = 1; i <= days.length; i++) {
    NSDateComponents *dc = [NSDateComponents new];
    [dc setYear:2015];
    [dc setMonth:12];
    [dc setDay:i];
    NSDate *d = [calendar dateFromComponents:dc];
    [arrayDates addObject:d];
}

问题是第一个对象总是(上个月最后一天):

2015-11-30 23:00:00 +0000

最后一天是(不是当月的最后一天) 2015-12-30 23:00:00 +0000

我试过设置不同的语言环境、日历选项,但没有任何帮助.. 任何的想法?

谢谢

这感觉像是一个 timezone/locale 问题。我想知道如果您设置明确的区域设置以及一天中的明确时间,它是否会消失:

[calendar setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];

然后,当您创建日期时,如下所示:

[dc setHour:12];

我认为这是一个 timezone/locale 问题的原因是因为我在这里尝试了您的代码并且它第一次运行完全正确。