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) 安江正樹@東海大学理学部物理学科】