timegm(3) gmtime と localtime の逆関数

Other Alias

timelocal

書式

#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) 関数の逆関数である。

準拠

これらの関数は非標準で 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;
}

この文書について

この man ページは Linux man-pages プロジェクトのリリース 3.65 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。