iOS oc 如何获取13位的时间戳

349 阅读2分钟

在iOS开发中,若需要获取13位的时间戳(即精确到毫秒的时间戳),可以通过以下方法实现:

  1. 使用NSDate类获取当前时间并转换为13位时间戳
  • iOS系统默认生成的时间戳是10位整数(精确到秒),但可以通过乘以1000将秒级时间戳转换为毫秒级时间戳。

  • 示例代码如下:

NSDate *now = [NSDate date];

NSTimeInterval interval = [now timeIntervalSince1970] * 1000;

NSLog(@"当前时间戳(13位): %ld", (long)interval);

  • 这段代码通过[NSDate date]获取当前时间,并使用timeIntervalSince1970方法计算自1970年1月1日以来的秒数,然后乘以1000得到毫秒级的时间戳。
  1. 从服务端返回的13位时间戳转换为可读格式
  • 如果从服务端接收到的是一个13位的时间戳字符串,可以将其转换为NSDate对象,再格式化为可读的时间字符串。

  • 示例代码如下:

NSString *timeStampString = @"1495453213000"; // 假设这是从服务端返回的13位时间戳

NSTimeInterval interval = [timeStampString doubleValue] / 1000.0;

NSDate *date = [NSDate dateWithTimeIntervalSince1970: interval];

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";

NSString *dateString = [formatter stringFromDate:date];

NSLog(@"转换后的时间字符串: %@", dateString);

  • 这里将接收到的13位时间戳字符串除以1000转换为秒级时间戳,再通过NSDate类解析为NSDate对象,最后使用NSDateFormatter将其格式化为可读的时间字符串。
  1. 注意事项
  • iOS系统默认生成的时间戳是10位整数,因此在处理13位时间戳时,需要特别注意是否需要除以1000或乘以1000进行单位转换。
  • 如果需要将时间戳转换为其他格式(如年月日时分秒),可以使用NSDateFormatter类进行格式化。例如,设置格式为"yyyy-MM-dd HH:mm:ss"可以得到精确到秒的时间字符串,而设置格式为"yyyy-MM-dd HH:mm:ss.SSS"可以得到精确到毫秒的时间字符串。
  1. 总结
  • 获取当前时间的13位时间戳:直接将秒级时间戳乘以1000即可。
  • 处理接收到的13位时间戳:将其除以1000转换为秒级时间戳后解析为NSDate对象。
  • 格式化时间戳:使用NSDateFormatter类根据需求设置不同的日期格式。

通过上述方法,可以在iOS开发中灵活地获取和处理13位时间戳,满足不同场景的需求。