ios - 日期(timeIntervalSince1970 :) returns 2 different results

标签 ios swift date epoch

我从天气 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/

相关文章:

swift - UILongPressGesture 被调用两次

xcode - Swift 编译器挂起!这是一个错误吗?

ios - 在 Swift 的 TableView 中的每小时日历中创建事件

python - 在python中转换pandas dataframe datetime格式

ios - undefined 不是一个对象(评估 'LoginManager.loginWithPermissions' )

ios - downloadTaskWithRequest 混淆行为(swift,IOS)

python - 如何使用 pandas 按组减去基于数据的列的行?

sql - 如何按日期顺序计算日期之间的平均天数

objective-c - Xcode建议将%C替换为%d

ios - 后台定时任务iOS