localtime, gmtime, asctime, ctime, mktime, difftime - 時刻データの変換

【書式】

#include <time.h>

struct tm *localtime(const time_t *t);

struct tm *gmtime(const time_t *t);

char *asctime(const struct tm *tm);

char *ctime(const time_t *t);

time_t mktime(struct tm *tm);

double difftime(time_t t1, time_t t2);

【解説】

これらの関数は時刻データの変換をおこないます。

localtime()はtの指すtime_t型の時刻(UTCでの1970/1/1 00:00:00 からの通

算秒数 ) をstruct tm型に変換し、そのアドレスを返します。返される構造

体の内容はUTCではなく、ローカルタイムです。struct tmは<time.h>で以下

のように定義されています。

struct tm {

int tm_sec; /* 秒(0-59) */

int tm_min; /* 分(0-59) */

int tm_hour; /* 時(0-23) */

int tm_mday; /* 日(1-31) */

int tm_mon; /* 月(0-11) */

int tm_year; /* 西暦年-1900 */

int tm_wday; /* 曜日(0-6) */

int tm_yday; /* 通算日数(0-365) */

int tm_isdst; /* サマータイムフラグ */

};

tm_isdstフィールドは、サマータイムを実施中ならば0 以外の値がセットさ

れます。

gmtime() は時刻をローカルタイムでなく UTC で表現する点を除いて

localtime()とほぼ同様の働きをします。

asctime()はtmの指すstruct tm型の時刻データを、次のような26バイトの文

字列に変換します。

Wed Feb 17 20:14:04 1988\n\0

ctime()はtの指すtime_t型の時刻データを、asctime()と同じ26 バイトの文

字列に変換します。これは、

asctime(localtime(t));

と同じです。

mktime() はtmの指すstruct tm型の時刻データを、time_t型に変換して返し

ます。この値はstime(3)に渡して時刻設定に使うことができます。

difftime()はtime_t型の時刻データの差を返します。t1 - t2 の値を秒単位

にスケーリングして返します。

【リターン値】

localtime(), gmtime()は変換されたstruct tm型データのアドレスを返しま

す。

asctime(), ctime()は変換された文字列の先頭アドレスを返します。

mktime()はtime_t型の時刻を返します。

difftime()はdouble型で表現された秒単位の差を返します。

【可搬性】

mktime()

ANSI, DOS窓

上記以外

ANSI, UNIX, DOS窓

【参照】

TZ(3), time(3)

【バグ】

localtime(), gmtime(), asctime(), ctime()は内部に持っているstaticな

文字配列のアドレスを返します。したがってこれらを続けて呼ぶと、以前の

データは破壊されます。

【copyright (c) 安江正樹@東海大学理学部物理学科】