Unix 日期时间格式未在 swift 5 中正确转换

Unix dateTime format not properly converted in swift 5

正在使用 alamofire 在 swift 中获取 JSON 数据。 时间值是整数并且有 iso8601 格式。当我从后端转换整数格式的 Unix 日期时间时,给我一个奇怪的值。

1570088096210 必须转换为 GMT: Thursday, October 3, 2019 7:34:56.210 AM 但给我 51724-02-10T10:16:00+00:00

Code:

 let dateValue = Double(AppData.time ?? 0)
 let dateFinal = Date(timeIntervalSince1970: dateValue).formattedISO8601

1570088096210实际上是02/10/51724 @ 10:16pm (UTC)

请检查您的收入数据

似乎您正在获取 milliseconds,您需要在创建 date 之前将其转换为 seconds

let time: TimeInterval = 1570088096210/1000
let dateFinal = Date(timeIntervalSince1970: time)
print(dateFinal.description)

2019-10-03 07:34:56 +0000

我们鼓励您使用 Decodable 来解析 JSON。它可以非常顺利地处理 millisecondsSince1970,包括转换为 Date

let json = """
{"date":1570088096210}
"""

struct PointInTime : Decodable {
    let date : Date
}

do {
    let decoder = JSONDecoder()
    decoder.dateDecodingStrategy = .millisecondsSince1970
    let result = try decoder.decode(PointInTime.self, from: Data(json.utf8))
    print(result.date) // 2019-10-03 07:34:56 +0000
} catch {
    print(error)
}