首页 文章

NSDate为每个月的每一天

提问于
浏览
0

我浏览了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 回答

  • 1

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

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

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

    [dc setHour:12];
    

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

相关问题