如果从服务器传回的数据是13位的时间戳 怎么转换为时间呢?
学习是最好的投资!
我们也遇到了同样的问题,服务端是 Java(Jersey + Jackson)输出的时间戳是 13 位的,而 iOS 要求是 10 位的……
Stackoverflow 的回答是:Java 时间戳是精确到毫秒的,就是 13 位的。
For what it's worth, that number is standard Java timestamp (used by JDK classes); Unix stores seconds, Java milliseconds, which is why it's bit larger value.
另外一个帖子 提供了解决方法
除 1000
示例代码如下:
double timestampval = [[updates objectForKey:@"timestamp"] doubleValue]/1000; NSTimeInterval timestamp = (NSTimeInterval)timestampval; NSDate *updatetimestamp = [NSDate dateWithTimeIntervalSince1970:timestamp];
NSString * timeStampString = @"1423189125874"; NSDate *date = [NSDate dateWithTimeIntervalSince1970:[timeStampString doubleValue] / 1000]; NSLog(@"%f", ([date timeIntervalSince1970] * 1000.0));
输出
2015-02-06 10:51:35.323 iOSTest[4359:67092] 1423189125874.000000
NSTimeInterval是 double 类型的,所以除以 1000 就不会丢精度了。
NSTimeInterval
NSString * timeStampString = @"1423189125873"; NSTimeInterval _interval=[[timeStampString substringToIndex:10] doubleValue]; NSDate *date = [NSDate dateWithTimeIntervalSince1970:_interval]; NSLog(@"%@", date);
======================
保留毫秒
NSString * timeStampString = @"1423189125873"; NSTimeInterval _interval=[timeStampString doubleValue] / 1000.0; NSDate *date = [NSDate dateWithTimeIntervalSince1970:_interval]; NSDateFormatter *objDateformat = [[NSDateFormatter alloc] init]; [objDateformat setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"]; NSLog(@"%@", [objDateformat stringFromDate: date]);
除以1000
我们也遇到了同样的问题,服务端是 Java(Jersey + Jackson)输出的时间戳是 13 位的,而 iOS 要求是 10 位的……
Stackoverflow 的回答是:Java 时间戳是精确到毫秒的,就是 13 位的。
另外一个帖子 提供了解决方法
示例代码如下:
输出
NSTimeInterval
是 double 类型的,所以除以 1000 就不会丢精度了。======================
保留毫秒
除以1000