NSCalendar回归错误的一年

时间:2013-12-30 12:18:51

标签: ios iphone nsdate nscalendar

我从dateFromComponents获得2012年,我的当前日期是2013年。为什么?我没有在任何地方改变这一年。

NSCalendar *cal = [NSCalendar currentCalendar];
NSDateComponents *comp = [cal components:NSCalendarUnitYear fromDate:[NSDate date]];

NSLog(@"%ld", (long)[comp year]); //2013

NSLog(@"%@", [cal dateFromComponents:comp]); // 2012-12-31 23:00:00 +0000

1 个答案:

答案 0 :(得分:1)

您的转化会将日历中的时区考虑在内,在这种情况下,您可能不希望将日期拆分为组件。将时区设置为GMT,它应该为您提供所需的结果;

[cal setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];