【问题标题】:iOS Core Motion how to convert timestamp to Date?iOS Core Motion 如何将时间戳转换为日期?
【发布时间】:2019-11-25 05:23:36
【问题描述】:

我正在检查 CMRecordedAccelerometerData,它有一个时间戳,定义为:

时间戳是从设备开始的时间量,以秒为单位 已启动。

如何将设备上次启动的时间戳转换为 NSDate?

例如系统提供一个CMRecordedAccelerometerData对象,其时间戳值为:1030958.895134

如果我使用任何可用的参考帧(1970 年,参考日期),我会得到一个错误的日期,而不是 2019 年。我想要记录事件的真实日期。

【问题讨论】:

  • 只需let date = Date(timeIntervalSince1970: timeStampHere) ?
  • 请再次阅读问题,系统返回自上次启动以来的任意秒数。如果我使用你的解决方案,我会得到一个 1970 年的日期,而不是 2019 年。我想要记录事件的真实日期
  • @AlexStone 我的回答应该让你知道时间戳的日期。它不适合你吗?
  • @akaur 还是不知道怎么获取上次开机的时间戳,所以答案不起作用:(

标签: ios timestamp nsdate core-motion


【解决方案1】:

我猜这个答案来得有点晚,但是,首先,您可以通过从现在减去正常运行时间ProcessInfo.processInfo.systemUptime 来获得启动时间,但在 iOS 9+ 中,ProcessInfo.processInfo.systemUptime 具有日期属性startDate,它应该是你最初所追求的。

【讨论】:

    【解决方案2】:

    时间戳是一个 TimeInterval,它是 Double 的类型别名,将持续时间表示为秒数。因此,您可以使用 NSDate 的 (timeIntervalSince1970:) 将 TimeInterval 转换为日期。

    let myTimeInterval:TimeInterval = 1574660642
    let dateNow = NSDate(timeIntervalSince1970: myTimeInterval)  //will print "Nov 24, 2019 at 9:44 PM"
    

    如果你需要相对于当前日期的日期加上TimeInterval,你可以使用(timeInterval:since:)

    var date = Date()
    let timestampOfLastBoot: TimeInterval = 1572628813
    let currentTimestamp: TimeInterval = NSDate().timeIntervalSince1970
    let dateOfTimeStamp = Date(timeInterval: timestampOfLastBoot-currentTimestamp, since: date)    //will print "Nov 1, 2019 at 10:20 AM"
    

    【讨论】:

      猜你喜欢
      • 2014-02-03
      • 2019-08-24
      • 2012-04-10
      • 2016-11-26
      • 2019-04-03
      • 1970-01-01
      • 2020-10-19
      相关资源
      最近更新 更多