NSTimeInterval 到 unix 时间戳

NSTimeInterval to unix timestamp(NSTimeInterval 到 unix 时间戳)
本文介绍了NSTimeInterval 到 unix 时间戳的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我从 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 时间戳的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Why local notification is not firing for UNCalendarNotificationTrigger(为什么没有为UNCalendarNotificationTrigger触发本地通知)
iOS VoiceOver functionality changes with Bundle Identifier(IOS画外音功能随捆绑包标识符而变化)
tabbar middle tab out of tabbar corner(选项卡栏中间的选项卡角外)
Pushing UIViewController above UITabBar(将UIView控制器推送到UITabBar上方)
How to target newer versions in .gitlab-ci.yml using auto devops (java 11 instead of 8 and Android 31 instead of 29)(如何在.gitlab-ci.yml中使用自动开发工具(Java 11而不是8,Android 31而不是29)瞄准较新的版本)
Android + coreLibraryDesugaring: which Java 11 APIs can I expect to work?(Android+core LibraryDesugering:我可以期待哪些Java 11API能够工作?)