[問題] 已知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