Преобразование часового пояса C API на Linux, кто-нибудь?
искать то, что я предположил, было бы очень просто - учитывая местное время Unix в определенном часовом поясе (указанном в виде строки, например, "Америка / Триатлон» - обратите внимание, что этоне мое местное время), получите соответствующее значение времени в GMT. То есть что-то вроде
time_t get_gmt_time(time_t local_time,
const char* time_zone);
Как бы обманчиво это ни звучало, ближе всего я смог найти следующий фрагмент кода из timegm 'Страница man s:
#include
#include
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;
}
Должен быть лучший способ, чем эта воинственная, не защищенная от нитей мерзость, верно? Правильно??