ios - NSCalender 返回错误的年份

标签 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

最佳答案

您的转换会考虑日历中的时区,在这种情况下,您可能不希望将日期拆分为组件。将时区设置为 GMT,它应该会给你想要的结果;

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

关于ios - NSCalender 返回错误的年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20839426/

相关文章:

iphone - 如何正确显示 UIViewController?

ios - CardIO View 的框架

iphone - 尝试更改 CGImageRef 数据中的像素时获取 RGB 0 值

iphone - PerformSelectorInBackground 是否为每次调用生成新线程?

iphone - UIWebView 内容在 View 显示后才会加载

swift - 发送到网络服务的日期错误

ios - 获取具有给定月份的开始日期和结束日期的所有星期(NSDate objective-c )

ios - 将文件保存在swift 3的文档目录中?

ios - 将字符串转换为日期返回错误的结果

ios - 用颜色绘制 SKPhysicsBody 的形状