我从天气 API 获得了一些结果,其中之一是纪元时间戳中的日期。
我发现用 Date(timeIntervalSince1970:)
转换我得到了正确的日期
我正在使用特定的数字 --> 1501452000
我在 Playground 上得到了 2 个结果
1) 2017 年 7 月 31 日,12:00AM
。 -- 当 --> let date = Date(timeIntervalSince1970: 1501452000)
2) 2017-07-30 22:00:00 +0000
当 --> print(date)
API 结果是:
“time_epoch”:1501452000,
"time": "2017-07-30 23:00",
通过检查我的其余结果,它们与 API 结果的其余部分相匹配......但是当我转换 1501452000
-> 时,我没有得到正确的结果小时 23:00 但 22:00 !
知道发生了什么吗? 是 API 错误(我不这么认为)还是我转换它的方式错误?
非常感谢
最佳答案
timeIntervalSince1970
初始化程序设置 UTC 时区的时间,而您的 API 可能会以 GMT 发送 date
。当您使用 print(data)
时,您会得到不同的结果,因为如果您没有使用 DateFormatter
来生成 String
格式Date
对象,它在格式化 Date
对象时使用您设备的当前设置。
Date
对象表示绝对时间点,但是当您使用 DateFormatter
打印它时,它会转换为特定于位置/时区的相对表示.您只需设置 DateFormatter
以匹配 API 的时区设置,您就会看到正确打印的日期。
关于ios - 日期(timeIntervalSince1970 :) returns 2 different results,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45405032/