[問題] 時間字串轉換時區

看板MacDev作者 (好天氣,好心情~)時間6年前 (2018/10/30 00:58), 6年前編輯推噓3(3012)
留言15則, 6人參與, 5年前最新討論串1/1
大家好~ 目前正在開發的功能是取用量測心跳的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://www.ptt.cc/bbs/MacDev/M.1540832336.A.8F1.html

10/30 01:20, 6年前 , 1F
TimeZone(abbreviation: "UTC")
10/30 01:20, 1F
這個我有試過,Date object顯示的是23:00沒錯,但轉成String輸出的結果還是15:00... 這裡請問要如何解決呢?

10/30 01:21, 6年前 , 2F
不過我覺得你要去補充一點關於時區的知識比較好
10/30 01:21, 2F

10/30 01:22, 6年前 , 3F

10/30 01:25, 6年前 , 4F
gmt+0 15:00 == gmt+8 23:00
10/30 01:25, 4F
這個我了解,現在是想請問如何讓處理完的結果變成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

10/30 02:35, 6年前 , 5F
Data本身print出來預設是+0的時間
10/30 02:35, 5F

10/30 02:35, 6年前 , 6F
Date...
10/30 02:35, 6F

10/30 02:36, 6年前 , 7F
Dateformatter本身會帶出你所在的時區時間,即+8
10/30 02:36, 7F

10/30 02:38, 6年前 , 8F
意思就是你給的字串時間他會認定是給+8的時間
10/30 02:38, 8F

10/30 02:41, 6年前 , 9F
https://i.imgur.com/hBKYhmr.png?1 看你要第一次校正
10/30 02:41, 9F

10/30 02:41, 6年前 , 10F
或第二次校正的date
10/30 02:41, 10F

10/30 08:12, 6年前 , 11F
感謝樓上兩位詳細的解說!問題解決了謝謝你們~

10/30 09:26, 6年前 , 12F
之前也困擾著這個問題,但我在playground swift4.1好像就
10/30 09:26, 12F

10/30 09:26, 6年前 , 13F
不用再轉換了,直接當地的時間
10/30 09:26, 13F
那可能是我還在swift4.0的樣子,所以才要這麼麻煩@@ ※ 編輯: lisa090914 (49.214.209.42), 10/30/2018 10:02:35

10/30 19:26, 5年前 , 14F
先把server回傳字串轉回date變+0 然後用calendar method
10/30 19:26, 14F

10/30 19:29, 5年前 , 15F
的hour +timezone再轉回字串
10/30 19:29, 15F
文章代碼(AID): #1RrpnGZn (MacDev)