【问题标题】:Get wrong date value after converting unix time stamp [duplicate]转换unix时间戳后获取错误的日期值[重复]
【发布时间】:2020-06-04 12:18:48
【问题描述】:

我从服务器得到一个 unix 时间戳

1589275703283

当我试图从这个网站转换它时:https://www.epochconverter.com 我得到Tuesday, 12 May 2020的值

我正在使用此代码将此时间戳转换为我可以读取的日期

 func timeStringFromUnixTime(timestamp: Int64) -> String {
      let date = Date(timeIntervalSince1970: TimeInterval(timestamp))
      let dateFormatter = DateFormatter()
      dateFormatter.dateFormat = "dd, MMMM yyyy"
      dateFormatter.timeZone = TimeZone(identifier: NSTimeZone.default.identifier)
      let localDate = dateFormatter.string(from: date)
      return localDate
   }

但它通过了我22 February 52332,这显然是错误的

谁能帮我解决问题的出处? 提前谢谢

【问题讨论】:

    标签: swift timestamp


    【解决方案1】:

    时间戳1589275703283 对于“正常”的 UNIX 时间戳来说太大了。它以毫秒而不是秒为单位(epochconverter.com 足够聪明,可以检测到;它正在打印“假设此时间戳以毫秒为单位”)。所以你需要将你的时间戳除以 1000:

    let date = Date(timeIntervalSince1970: TimeInterval(timestamp) / 1000)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-01
      • 1970-01-01
      • 2013-05-28
      • 2012-05-07
      • 1970-01-01
      • 1970-01-01
      • 2020-10-19
      相关资源
      最近更新 更多