我执行以下代码段:
NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comp = [gregorian components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:[NSDate date]];
[comp setDay:1];
NSDate *firstDayOfMonthDate = [gregorian dateFromComponents:comp];
firstDayOfMonthDate的值是= 30-4-2011,但取值范围是1-5-2011,即我想要任何指定日期的月份的第一个日期。
但这给了我上个月的最后一个日期。
提前致谢。
最佳答案
添加
[gregorian setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
在初始化您的NSCalendar之后。
[NSDate date]
将返回UTC时区中的日期,这是自格林威治标准时间2001年1月1日00:00以来的绝对间隔,但是NSCalendar的timeZone设置为默认时区,可能不是UTC。UTC与UTC是“相同的”,引自维基百科: