NSDate为每个月的每一天

时间:2015-12-13 20:14:43

标签: ios nsdate nsdateformatter nscalendar nsdatecomponents

我浏览了stackoverflow,但没有一个解决方案不能正常工作。 我想生成一个月内的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

我尝试过设置不同的区域设置,日历选项,但没有任何帮助.. 任何的想法?

谢谢

1 个答案:

答案 0 :(得分:1)

这感觉就像是时区/语言环境问题。我想知道如果你在一天中间设置一个明确的语言环境和明确的小时,​​它是否会消失:

serialize()

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

unserialize()

我认为它是时区/区域设置问题的原因是因为我在这里尝试了您的代码并且它第一次运行正常。