簡體   English   中英

Date(timeIntervalSince1970 :)返回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 >轉換為日期時,我沒有得到正確的Hour 23:00,而是22:00!

知道發生了什么嗎? API(我不這樣認為)或我進行轉換的方式錯了嗎?

非常感謝

timeIntervalSince1970初始化程序在UTC時區中設置時間,而您的API可能在格林尼治標准時間(GMT)中發送date 使用print(data) ,會有不同的結果,因為如果不使用DateFormatter生成Date對象的String格式,則在格式化Date對象時它將使用設備的當前設置。

Date對象代表一個絕對時間點,但是當您使用DateFormatter打印它時,它將被轉換為特定於位置/時區的相對表示。 您只需要設置DateFormatter使其與API的時區設置相匹配,即可看到正確打印的日期。

夏令時發生此問題。 您所在的國家/地區是否在該確切日期更改夏令時?

  1. 在操場上, let date = Date(timeIntervalSince1970: 1501452000)可以讓您在系統時區中看到右側的時間。

  2. 當您打印時看到2017-07-30 22:00:00 +0000這與格林尼治標准時間相同

API是否顯示特定時區? 看起來像格林尼治標准時間+1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM