我的代码从外部源接收 time_t。然而,那个 time_t 并不真正基于 UTC 纪元时间,我得到一个时区字符串(例如,EDT、PST 等),它基于这个偏移的纪元。我需要将其转换为真正的基于 UTC 纪元的 time_t。
此外,我需要能够朝相反的方向前进,采用基于 UTC 纪元的 time_t 和时区,并创建偏移的 time_t,但在这种情况下,而不是像 EDT/PST 等时区,我有一个Unix 风格的时区描述,如“美国/纽约”,并且需要根据夏令时转换为正确的时区,所以我需要从算法中返回,包括偏移的 time_t 和正确的描述符(EDT,EST)。
我很确定我可以通过临时更改 tzset() 以及分解时间、time_t 和 timeval 之间的一些转换组合来解决这个问题,但是这样做总是会让我的大脑受伤,让我觉得我错过了一些明显的东西. 任何人都可以推荐一些代码或 sudo-code 来做到这一点,或者至少是一种正确的方法吗?