我正在寻找一些我认为非常简单的东西 - 考虑到特定时区的本地Unix时间(指定为字符串,例如"America/New_York" - 请注意,这不是我当地的时间),得到相应的时间值在GMT.也就是说,有些东西
time_t get_gmt_time(time_t local_time,
const char* time_zone);
Run Code Online (Sandbox Code Playgroud)
听起来很简单,我能找到的最接近的是来自timegm手册页的以下代码片段:
#include <time.h>
#include <stdlib.h>
time_t
my_timegm(struct tm *tm)
{
time_t ret;
char *tz;
tz = getenv("TZ");
setenv("TZ", "", 1);
tzset();
ret = mktime(tm);
if (tz)
setenv("TZ", tz, 1);
else
unsetenv("TZ");
tzset();
return ret;
}
Run Code Online (Sandbox Code Playgroud)
有一种比这更好的方式不是线程安全的憎恶,对吧?对??