我正在Swift中基于OpenWeatherMap API创建天气应用。
我通过Unix Timestamp作为Int接收本地时间,我想将其转换为人类可读的格式。
我可以将当前(设备)时间转换为可读格式,但不能转换为int值。
答案 0 :(得分:2)
使用Codable
时非常简单
将与日期(dt
,sunrise
,sunset
)相关的所有结构成员声明为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解码器。)