C API do konwersji stref czasowych w systemie Linux, ktokolwiek?
Szukam czegoś, co, jak przypuszczam, byłoby bardzo proste - podanie lokalnego czasu uniksowego w określonej strefie czasowej (określonej jako ciąg znaków, np. „America / New_York” - uwaga:nie mój czas lokalny), uzyskaj odpowiednią wartość czasu w GMT. To znaczy coś w rodzaju
time_t get_gmt_time(time_t local_time,
const char* time_zone);
Jak się wydaje, podstępnie proste, najbliższy, jaki mogłem znaleźć, był następujący fragment kodu ze strony man 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;
}
Musi być lepszy sposób niż ta wojowniczo nieobjawowa obrzydliwość, prawda? Dobrze??