看板 MacDev 關於我們 聯絡資訊
大家好~ 目前正在開發的功能是取用量測心跳的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
uranusjr: TimeZone(abbreviation: "UTC")10/30 01:20
這個我有試過,Date object顯示的是23:00沒錯,但轉成String輸出的結果還是15:00... 這裡請問要如何解決呢?
uranusjr: 不過我覺得你要去補充一點關於時區的知識比較好10/30 01:21
uranusjr: https://unix4lyfe.org/time/10/30 01:22
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
luckycan: Data本身print出來預設是+0的時間10/30 02:35
luckycan: Date...10/30 02:35
luckycan: Dateformatter本身會帶出你所在的時區時間,即+810/30 02:36
luckycan: 意思就是你給的字串時間他會認定是給+8的時間10/30 02:38
gundam00: https://i.imgur.com/hBKYhmr.png?1 看你要第一次校正10/30 02:41
gundam00: 或第二次校正的date 10/30 02:41
cryinglove: https://i.imgur.com/rXIpa5I.jpg10/30 08:12
感謝樓上兩位詳細的解說!問題解決了謝謝你們~
G888888: 之前也困擾著這個問題,但我在playground swift4.1好像就10/30 09:26
G888888: 不用再轉換了,直接當地的時間10/30 09:26
那可能是我還在swift4.0的樣子,所以才要這麼麻煩@@ ※ 編輯: lisa090914 (49.214.209.42), 10/30/2018 10:02:35
yuanruo: 先把server回傳字串轉回date變+0 然後用calendar method 10/30 19:26
yuanruo: 的hour +timezone再轉回字串 10/30 19:29