NSTimeInterval 到 unix 时间戳 [英] NSTimeInterval to unix timestamp
问题描述
我从 CMMotionManager 获取 CMDeviceMotion 对象.CMDeviceMotion 的属性之一是时间戳,它表示为 NSTimeInterval (double).根据文档,这允许亚毫秒"时间戳精度.
I'm getting CMDeviceMotion objects from CMMotionManager. One of the properties of the CMDeviceMotion is timestamp, which is expressed as a NSTimeInterval (double). This allows for "sub millisecond" timestamp precision, according to documentation.
[motionManager startDeviceMotionUpdatesToQueue:motionQueue withHandler:^(CMDeviceMotion *motion, NSError *error) {
NSLog(@"Sample: %d Timestamp: %f ",counter, motion.timestamp);
}
不幸的是,NSTimeInterval 是自上次设备启动后计算的,这给以原始形式使用它带来了重大挑战.
Unfortunately, NSTimeInterval is calculated since last device boot, posing significant challenges to using it in its raw form.
有没有人有工作代码可以将此 NSTimeInterval 转换为类似 Unix 的时间戳(UTC 时区)?
Does anyone have a working code to convert this NSTimeInterval into a Unix like timestamp (UTC timezone)?
谢谢!
推荐答案
在将磁力计值与 CoreMotion 事件进行比较时,我遇到了类似的问题.如果你想转换这些 NSTimeIntervals 你只需要计算一次偏移量:
I had a similar problem when comparing magnetometer values with CoreMotion events. If you want to transform these NSTimeIntervals you just need to calculate the offset once:
// 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 到 unix 时间戳的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!