【发布时间】:2021-12-27 12:46:40
【问题描述】:
我正在寻找一种将 CoreMotion 事件中的时间戳转换为正确、高精度的“墙上日期时间”的方法。我想关联 iPhone 和 Apple Watch 上的事件,因此需要将这些时间戳转换为单个域。
我在互联网上测试了几种方法,例如:https://stackoverflow.com/a/53250802。这给出了完全错误的结果。
还有这个
extension TimeInterval {
static var bootTime = Date().timeIntervalSince1970 - ProcessInfo.processInfo.systemUptime
var unix: TimeInterval {
return (TimeInterval. bootTime + self)
}
}
这似乎一见钟情。我的测试表明,随着时间的推移,结果 unix TimeInterval 之间的差异越来越大:
在这张图片中,您可以看到收集事件的会话。单个会话事件具有相同的颜色。在上面,您会看到观看事件和在较低的电话事件上。我们看到 watchOS 上的时间戳似乎比 iPhone 上的进步慢。 这似乎时间戳可能与处理器周期数有关?
我的问题是:如何在 iPhone 和 watchOS 上以适当的方式将 CoreMotion 时间戳转换为 Date?
【问题讨论】:
-
来自文档:“时间戳是设备启动后的秒数。”所以将它添加到启动时间应该会给你一个有效的日期,我可以想到一个不准确的原因。
标签: ios swift watchos core-motion