zoukankan      html  css  js  c++  java
  • 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*1000;
    NSString
    *timestamp = [NSString stringWithFormat:@"%lld", time];

    NSLog(@"timestamp =%@",timestamp);
  • 相关阅读:
    微信小程序
    正则常用表达式
    nodejs基本
    node初学制作登录服务器实例
    前端面试题集锦(三)
    编程:
    js常见编程题
    前端面试题集锦(二)
    细节问题
    前端面试题集锦(一)
  • 原文地址:https://www.cnblogs.com/DWdan/p/4846210.html
Copyright © 2011-2022 走看看