timelocal(3) обратные gmtime и localtime функции

Other Alias

timegm

ОБЗОР

#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;
}