我从 CMMotionManager 获取 CMDeviceMotion 对象。 CMDeviceMotion的属性之一是时间戳,它表示为NSTimeInterval( double )。根据文档,这允许“亚毫秒”时间戳精度。

[motionManager startDeviceMotionUpdatesToQueue:motionQueue withHandler:^(CMDeviceMotion *motion, NSError *error) {
  NSLog(@"Sample: %d Timestamp: %f ",counter,  motion.timestamp);
}

不幸的是,NSTimeInterval是自上次设备启动以来计算的,这给以原始形式使用它带来了巨大的挑战。

是否有人能将NSTimeInterval转换为类似时间戳记(UTC时区)的Unix吗?

谢谢!

最佳答案

在将磁力计值与CoreMotion事件进行比较时,我遇到了类似的问题。如果要转换这些NSTimeIntervals,则只需计算一次偏移量:

// during initialisation

// Get NSTimeInterval of uptime i.e. the delta: now - bootTime
NSTimeInterval uptime = [NSProcessInfo processInfo].systemUptime;

// Now since 1970
NSTimeInterval nowTimeIntervalSince1970 = [[NSDate date] timeIntervalSince1970];

// Voila our offset
self.offset = nowTimeIntervalSince1970 - uptime;

关于ios - NSTimeInterval到Unix时间戳,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7576017/

10-10 20:43