时代迅速转换json int(unix时间戳)到可读日期

时间:2018-12-11 18:17:15

标签: json swift unix-timestamp epoch

我正在Swift中基于OpenWeatherMap API创建天气应用。

我通过Unix Timestamp作为Int接收本地时间,我想将其转换为人类可读的格式。

我可以将当​​前(设备)时间转换为可读格式,但不能转换为int值。

2 个答案:

答案 0 :(得分:2)

使用Codable时非常简单

  • 将与日期(dtsunrisesunset)相关的所有结构成员声明为Date

    let dt : Date
    
  • 为解码器添加适当的日期解码策略

    let decoder = JSONDecoder()
    decoder.dateDecodingStrategy = .secondsSince1970
    
  • 使用DateFormatter来获取人类可读的字符串

    let formatter = DateFormatter()
    formatter.setLocalizedDateFormatFromTemplate("yyyyMMMddHHmmss")
    let dateString = formatter.string(from: dt)
    

答案 1 :(得分:0)

Unix时间戳通常是自1970年1月1日午夜以来的秒数或毫秒。

将可可Date转换为Unix毫秒很容易:

let unixMilliseconds: Int = Int(Date().timeIntervalSince1970 * 1000)
print(unixMilliseconds)

或者,如果您有Unix时间戳记:

let date = Date.init(timeIntervalSince1970: Double(unixMilliseconds/1000))
print(DateFormatter.localizedString(from: date, dateStyle: .medium, timeStyle: .medium))

(如果您要花费数秒的时间,您可以在上面的代码中使用*1000/1000。或者使用vadian出色答案中所述的JSON解码器。)