美文网首页iOS 技术文档收录
iOS NSDate转成时间戳出现一年的误差

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

作者: hnxyzhw | 来源:发表于2017-04-11 17:57 被阅读1263次

    第一种方法在转时间戳时使用的格式是: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可以会让你背大锅的。

    相关文章

      网友评论

        本文标题:iOS NSDate转成时间戳出现一年的误差

        本文链接:https://www.haomeiwen.com/subject/ixyuattx.html