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