Conversión de zona horaria C API en Linux, ¿alguien?
Estoy buscando algo que presumí que sería muy simple, dada la hora local de Unix en una zona horaria específica (especificada como una cadena, por ejemplo, "America / New_York" - nota que esno mi hora local), obtenga el valor de tiempo correspondiente en GMT. Es decir, algo en la línea de
time_t get_gmt_time(time_t local_time,
const char* time_zone);
Tan engañosamente simple como suena, lo más cercano que pude encontrar fue el siguiente fragmento de código de la página de manual de 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;
}
Tiene que haber una mejor manera que esta abominación beligerante, sin hilos, ¿verdad? ¿¿Derecha??