TIMEGM(3)

ИМЯ
timegm, timelocal - обратные gmtime и localtime функции

ОБЗОР
#include <time.h>

time_t timelocal(struct tm *tm);

time_t timegm(struct tm *tm);

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

timelocal(), timegm(): _BSD_SOURCE || _SVID_SOURCE

ОПИСАНИЕ
Функции timelocal() и timegm() выполняют обратные localtime(3) и gmtime(3) действия.

АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).
Интерфейс | Атрибут | Значение
timelocal(), timegm() | безвредность в нитях | безвредно (MT-Safe env locale)

СООТВЕТСТВИЕ СТАНДАРТАМ
Данные функции являются нестандартными расширениями GNU, которые также присутствуют в BSD. Не используйте их; смотрите ЗАМЕЧАНИЯ.

ЗАМЕЧАНИЯ
Функция timelocal() эквивалентна стандартной функции POSIX mktime(3). Нет ни одной причины когда-либо её использовать.

Переносимым вариантом timegm() является установка переменной окружения TZ в UTC, вызов mktime(3) и восстановление значения TZ. Примерно так:
#include <time.h>
#include <stdlib.h>
time_t
my_timegm(struct tm *tm)
{
    time_t ret;
    char *tz;
    tz = getenv("TZ");
    if (tz)
        tz = strdup(tz);
    setenv("TZ", "", 1);
    tzset();
    ret = mktime(tm);
    if (tz) {
        setenv("TZ", tz, 1);
        free(tz);
    } else
        unsetenv("TZ");
    tzset();
    return ret;
}

СМОТРИТЕ ТАКЖЕ
gmtime(3), localtime(3), mktime(3), tzset(3)