每月的每一天的NSDate

问题描述:

我浏览过了*,但没有一个解决方案没有正常工作。 我想生成每月的天NSDate的阵列,这是我使用的代码(年份和月份硬编码现在):每月的每一天的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

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

谢谢

这感觉就像一个时区/区域设置的问题。我不知道是否消失,如果你设定明确的语言环境,并在一天中的明确时间:

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

然后,当你创建的日期,是这样的:

[dc setHour:12]; 

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

+0

您好!谢谢你的回答,但是当你设置月份:12,但是尝试设置月份:11,你会得到31天,这是错误的,应该是30天。 – zevonja

+0

我期望这是因为'days'是使用一个名为'today'的变量来计算的,我想像的是今天 - 也就是12月的一天。 – TwoStraws

+0

你是绝对正确的,我需要一个明确的休息时间。谢谢! – zevonja