作者lisa090914 (好天氣,好心情~)
看板MacDev
標題[問題] 時間字串轉換時區
時間Tue Oct 30 00:58:53 2018
大家好~
目前正在開發的功能是取用量測心跳的SDK (非apple 官方提供),其中一個function會回
傳量測的時間,但是有時差+8hr的問題。
比如說:回傳的時間是 10/29 15:00 (GMT+0),但實際上應該是10/29 23:00 (GMT+8)
因為技術問題無法改動原SDK,只好我自己再接收到回傳值再做更改。
有Google過相關問題了,照著做卻發現時間變成 10/29 07:00....
如圖
https://i.imgur.com/UHDy9H0.jpg
後來看到這篇,發現會自動把input的時區默認為當前時區(GMT+8)
https://blog.csdn.net/shenjie_xsj/article/details/79033861
(可以直接看文章最下面的註解)
想請問有什麼方法才能得到正確時區的時間呢?
謝謝各位解惑Orz
<更新>
剛剛發現把dateFormatter的時區改成UTC,得到的Date object顯示的時間是對的,但我
要轉成String就有變成15:00了,這裡請問要怎麼改呢?
https://i.imgur.com/5Byqm5P.jpg
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.214.209.42
※ 文章網址: https://webptt.com/m.aspx?n=bbs/MacDev/M.1540832336.A.8F1.html
1F:→ uranusjr: TimeZone(abbreviation: "UTC")10/30 01:20
這個我有試過,Date object顯示的是23:00沒錯,但轉成String輸出的結果還是15:00...
這裡請問要如何解決呢?
2F:→ uranusjr: 不過我覺得你要去補充一點關於時區的知識比較好10/30 01:21
4F:→ cryinglove: gmt+0 15:00 == gmt+8 23:0010/30 01:25
這個我了解,現在是想請問如何讓處理完的結果變成23:00?
※ 編輯: lisa090914 (49.214.209.42), 10/30/2018 01:40:42
※ 編輯: lisa090914 (49.214.209.42), 10/30/2018 01:54:52
※ 編輯: lisa090914 (49.214.209.42), 10/30/2018 01:55:21
5F:→ luckycan: Data本身print出來預設是+0的時間10/30 02:35
6F:→ luckycan: Date...10/30 02:35
7F:→ luckycan: Dateformatter本身會帶出你所在的時區時間,即+810/30 02:36
8F:→ luckycan: 意思就是你給的字串時間他會認定是給+8的時間10/30 02:38
10F:→ gundam00: 或第二次校正的date 10/30 02:41
感謝樓上兩位詳細的解說!問題解決了謝謝你們~
12F:推 G888888: 之前也困擾著這個問題,但我在playground swift4.1好像就10/30 09:26
13F:→ G888888: 不用再轉換了,直接當地的時間10/30 09:26
那可能是我還在swift4.0的樣子,所以才要這麼麻煩@@
※ 編輯: lisa090914 (49.214.209.42), 10/30/2018 10:02:35
14F:推 yuanruo: 先把server回傳字串轉回date變+0 然後用calendar method 10/30 19:26
15F:→ yuanruo: 的hour +timezone再轉回字串 10/30 19:29