iOS NSDate转成时间戳出现一年的误差

第一种方法在转时间戳时使用的格式是:YYYY-MM-dd

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"YYYY-MM-dd"];
  //从服务器拿到的时间值1451347200000,服务器上显示的时间是:29-12月-15
    NSDate *confromTimesp = [NSDate dateWithTimeIntervalSince1970:[date longLongValue]/1000];
    NSString *timeString = [formatter stringFromDate:confromTimesp];

打断点输出后显示的是:2016-12-29

第二种方法的时间戳格式是:yyyy-MM-dd

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd"];
//从服务器拿到的时间值1451347200000,服务器上显示的时间是:29-12月-15
    NSDate *confromTimesp = [NSDate dateWithTimeIntervalSince1970:[date longLongValue]/1000];
    NSString *timeString = [formatter stringFromDate:confromTimesp];

打断点输出后显示的是:2015-12-29

可以看到同一天打印的日期差距一年,这个bug太恶心,而且还是日期在年末的情况下才出现的。

查了下YYYY-MM-dd和yyyy-MM-dd的区别,以下仅供参考:

“YYYY format” 是 “ISO week numbering system”,“yyyy format” 是 “Gregorian Calendar”。

以后处理时间戳可要注意了要使用小写的yyyy就行了,不然这个bug可以会让你背大锅的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析...
    时待吾阅读 5,020评论 0 6
  • ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year:...
    雨一流阅读 685评论 0 2
  • 在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析...
    时待吾阅读 5,080评论 1 13
  • 来源:http://blog.csdn.net/qq_27093465/article/details/69372...
    懒得阳光阅读 448评论 0 0