Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSTimeInterval到unix时间戳_Ios_Timestamp_Nstimeinterval_Core Motion - Fatal编程技术网

Ios NSTimeInterval到unix时间戳

Ios NSTimeInterval到unix时间戳,ios,timestamp,nstimeinterval,core-motion,Ios,Timestamp,Nstimeinterval,Core Motion,我正在从CMMotionManager获取CMDeviceMotion对象。CMDeviceMotion的属性之一是时间戳,它表示为NSTimeInterval(双精度)。根据文档,这允许“亚毫秒”的时间戳精度 [motionManager startDeviceMotionUpdatesToQueue:motionQueue withHandler:^(CMDeviceMotion *motion, NSError *error) { NSLog(@"Sample: %d Timesta

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

[motionManager startDeviceMotionUpdatesToQueue:motionQueue withHandler:^(CMDeviceMotion *motion, NSError *error) { 
  NSLog(@"Sample: %d Timestamp: %f ",counter,  motion.timestamp);
}
不幸的是,NSTimeInterval是从上次设备引导开始计算的,这给以原始形式使用它带来了巨大的挑战

是否有人拥有将此NSTimeInterval转换为类似Unix的时间戳(UTC时区)的工作代码


谢谢大家!

我想它应该被用作一种相对的度量,以允许您正确地对运动事件进行排序,因此它们选择了尽可能轻量级的实现


我想不出为什么你需要一个动作事件的实际日期和时间,因为它们几乎都是直接处理的。但是如果你真的想,你必须得到一个事件的时间戳,用它与当前日期一起计算出基准日期,然后用基准日期得出后续事件的实际时间

在比较磁强计值和CoreMotion事件时,我遇到了类似的问题。如果要变换这些NSTimeInterval,只需计算一次偏移:

// 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;

NSTimeInterval
通常与参考日期相关。你从哪里知道这是上次设备启动时的相对值?LOL为“亚毫秒”。
NSTimeInterval
是一个精度为53位的
double
,分辨率至少为1/2^52*(自1/1/01起的时间)。目前达到80纳秒左右。他们不仅没有获得任何精度,手持式计算器一分钟就能告诉他们,而且现在不可能用任何其他精度甚至是10毫秒的东西来可靠地校准时间戳。此外,我怀疑测量是在传感器芯片空闲时进行的,而时间戳反映了内核何时开始处理数据。真是一团糟。只要看看文档,不管是在Xcode还是类引用中——它清楚地指出(复制)“时间戳是设备启动后的秒数”。从参考时间起就没有了,我也很害怕。我希望稍后能绘制出运动事件,允许用户比较运动事件(动作记录应用程序)。这对我来说意味着更多的数学运算:(不算太多。NSDate的DATEBYADINGTIMETERVAL将为您解决大部分问题。2个问题。您可以直接减去这些时间间隔吗?文档中的系统正常运行时间并没有精确地定义为“启动时间”m,而是“自上次重新启动以来系统已唤醒的时间量”.当系统未处于“唤醒”状态时(例如,休眠状态等),是否会出现间隙???