[英]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
>轉換為日期時,我沒有得到正確的Hour 23:00,而是22:00!
知道發生了什么嗎? API(我不這樣認為)或我進行轉換的方式錯了嗎?
非常感謝
timeIntervalSince1970
初始化程序在UTC時區中設置時間,而您的API可能在格林尼治標准時間(GMT)中發送date
。 使用print(data)
,會有不同的結果,因為如果不使用DateFormatter
生成Date
對象的String
格式,則在格式化Date
對象時它將使用設備的當前設置。
Date
對象代表一個絕對時間點,但是當您使用DateFormatter
打印它時,它將被轉換為特定於位置/時區的相對表示。 您只需要設置DateFormatter
使其與API的時區設置相匹配,即可看到正確打印的日期。
夏令時發生此問題。 您所在的國家/地區是否在該確切日期更改夏令時?
在操場上, let date = Date(timeIntervalSince1970: 1501452000)
可以讓您在系統時區中看到右側的時間。
當您打印時看到2017-07-30 22:00:00 +0000
這與格林尼治標准時間相同
API是否顯示特定時區? 看起來像格林尼治標准時間+1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.