iOS 关于时间戳的一些细节

最近遇到一个bug,在iPhone上获取当前的时间戳,没有问题,而用iPad来测试的时候,出现了时间戳不对。当时的代码 (需要精确到毫秒,所以*1000)

NSTimeInterval t = [[NSDate date] timeIntervalSince1970]*1000;

NSString *timestamp = [NSString stringWithFormat:@"%ld", (long)t];

NSLog(@"timestamp =%@",timestamp);

后来,查了很多资料,发现测试iPad是32位的,iPhone是64位的,32位的long只有4个字节,64位的long有8个字节。

里面的[[NSDate date] timeIntervalSince1970]*1000是double类型(8个字节),强转为long4个字节,所以出现了时间戳不对。修改改后的代码 (long long 为8个字节)

NSTimeInterval t = [[NSDate date] timeIntervalSince1970];
long long time = t*;
NSString *timestamp = [NSString stringWithFormat:@"%lld", time]; NSLog(@"timestamp =%@",timestamp);
上一篇:帮你选处理器:CPU T9500-p9500-T9400-T9300-p8700对比分析!


下一篇:ES6常用方法总结