Date(timeIntervalSince1970:) returns 2 个不同的结果
Date(timeIntervalSince1970:) returns 2 different results
我从天气 API 得到了一些结果,其中之一是纪元时间戳中的日期。
我发现用 Date(timeIntervalSince1970:)
转换我得到了正确的日期
我正在使用特定的数字 --> 1501452000
我在 Playground 上得到了 2 个结果
1) Jul 31,2017,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 可能发送 date
格林威治标准时间。当您使用 print(data)
时,您会得到不同的结果,因为如果您没有使用 DateFormatter
来生成 Date
对象的 String
格式,它会使用您的设备当前格式化 Date
对象时的设置。
一个 Date
对象表示一个绝对时间点,但是当您使用 DateFormatter
打印它时,它会转换为 location/time 区域特定的相对表示。您只需将 DateFormatter
设置为与 API 的时区设置相匹配,您就会看到正确打印的日期。
这个问题发生在夏令时。您所在的国家/地区是否在这个确切日期更改夏令时?
let date = Date(timeIntervalSince1970: 1501452000)
在 Playgrounds 中,当您在右侧看到它时,应该会为您提供系统时区的时间。
当您打印它并看到 2017-07-30 22:00:00 +0000
- 这与 GMT 中的相同时间戳
API 是否显示特定时区?看起来像 GMT+1
我从天气 API 得到了一些结果,其中之一是纪元时间戳中的日期。
我发现用 Date(timeIntervalSince1970:)
转换我得到了正确的日期
我正在使用特定的数字 --> 1501452000
我在 Playground 上得到了 2 个结果
1) Jul 31,2017,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 可能发送 date
格林威治标准时间。当您使用 print(data)
时,您会得到不同的结果,因为如果您没有使用 DateFormatter
来生成 Date
对象的 String
格式,它会使用您的设备当前格式化 Date
对象时的设置。
一个 Date
对象表示一个绝对时间点,但是当您使用 DateFormatter
打印它时,它会转换为 location/time 区域特定的相对表示。您只需将 DateFormatter
设置为与 API 的时区设置相匹配,您就会看到正确打印的日期。
这个问题发生在夏令时。您所在的国家/地区是否在这个确切日期更改夏令时?
let date = Date(timeIntervalSince1970: 1501452000)
在 Playgrounds 中,当您在右侧看到它时,应该会为您提供系统时区的时间。当您打印它并看到
2017-07-30 22:00:00 +0000
- 这与 GMT 中的相同时间戳
API 是否显示特定时区?看起来像 GMT+1