作者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/cn.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