2

我的代码从外部源接收 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 来做到这一点,或者至少是一种正确的方法吗?

4

2 回答 2

1

time_t以秒为单位,因此只需将您的time_t值偏移时区偏移小时数的 3600 倍。只要您有专门确定的偏移量(即 EST 或 EDT 而不是 US/Eastern 或 EST5EDT 或诸如此类),那么这真的很简单并且不容易出错。

于 2010-07-25T14:50:33.000 回答
0

这些功能中的任何一个对您有帮助吗?localtime()、gmtime() 等

于 2010-07-25T14:17:29.140 回答