每月的每一天的NSDate
问题描述:
我浏览过了stackoverflow,但没有一个解决方案没有正常工作。 我想生成每月的天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];
我认为这是一个时区/区域设置问题的原因是因为我在这里尝试了您的代码,并且它第一次正确运行。
您好!谢谢你的回答,但是当你设置月份:12,但是尝试设置月份:11,你会得到31天,这是错误的,应该是30天。 – zevonja
我期望这是因为'days'是使用一个名为'today'的变量来计算的,我想像的是今天 - 也就是12月的一天。 – TwoStraws
你是绝对正确的,我需要一个明确的休息时间。谢谢! – zevonja