[问题] 已知UTC时间 转换时区的计算方式

楼主: alloc (韭菜)   2021-10-27 23:08:16
如题,
今天我有一个Input UTC时间(2021-10-27T23:03:00Z),与TimeZone A。
要怎么将时间从时区A转到指定的时区B呢?
目前能想到及找到的方法是去解析输入的UTC时间,转换为time_t变量资料,
再看 Timezone的时差多少加上去,最后再用localtime()去转回tm struct去做后续处理。
想问有没有更有效率的做法呢?谢谢。
作者: Schottky (顺风相送)   2021-10-28 10:08:00
就是这样做,你这格式不能也不需要用 curl 帮忙 parsesscanf 就可以简单拆成年月日时分秒了
作者: LPH66 (-6.2598534e+18f)   2021-10-28 12:13:00
是说 C++20 在 <chrono> 好像有一系列这方面的处理函数不过处理出来就不是 struct tm 而是 chrono:: 下的东西
楼主: alloc (韭菜)   2021-10-28 20:22:00
感谢回复
作者: mars90226 (火星人)   2021-10-28 22:46:00
手动加时区不会没考虑到日光节约时间吗?
作者: Schottky (顺风相送)   2021-10-28 23:11:00
时区名称是分开的,PST 是太平洋标准时间 (UTC-8)PDT 是太平洋日光节约时间 (UTC-7),不会混淆但如果是自动切换日光节约时间那就超复杂了还要考虑到各国的开始结束日期都不一样的问题美国人玩德国服务器(或反之)就会遇到这个日期差异问题那么如果要靠现成 library 帮你做自动转换,并不是每个library 都有这功能,就算有做也不见得有跟上最新法令XD像美国的开始结束日期就调整过不只一次扩大夏令长度
作者: mars90226 (火星人)   2021-10-29 00:01:00
原来如此,感谢S大解惑
楼主: alloc (韭菜)   2021-10-29 10:23:00
长知识了 感谢回复
作者: steve1012 (steve)   2021-10-30 14:22:00
可以用包好的 https://abseil.io/docs/cpp/guides/time连parsing 都有了

Links booklink

Contact Us: admin [ a t ] ucptt.com