CTIME(3)

名前
asctime, ctime, gmtime, localtime, mktime - バイナリデータと時刻のASCIIへの変換

書式
#include <time.h>

char *asctime(const struct tm *timeptr);

char *ctime(const time_t *timep);

struct tm *gmtime(const time_t *timep);

struct tm *localtime(const time_t *timep);

time_t mktime(struct tm *timeptr);

extern char *tzname[2];
extern long int timezone;
extern int daylight;

説明
関数 ctime(), gmtime() そして localtime() は time_t 型のカレンダー時刻を引き数とする。 引き数の値は協定世界時(UTC) 1970年1月1日 00:00:00 からの経過秒数と解釈される。

関数 asctime() と mktime() は 年・月・日などに分離されたバイナリデータからなる時刻要素を引き数とする。 時刻要素は <time.h> で以下のように定義されている tm 構造体に保持される。

    struct tm
    {
            int     tm_sec;                 /* 秒 */
            int     tm_min;                 /* 分 */
            int     tm_hour;                /* 時間 */
            int     tm_mday;                /* 日 */
            int     tm_mon;                 /* 月 */
            int     tm_year;                /* 年 */
            int     tm_wday;                /* 曜日 */
            int     tm_yday;                /* 年内通算日 */
            int     tm_isdst;               /* 夏時間 */
    };

tm 構造体のメンバーは以下の通り:

tm_sec
    秒数、ふつうは0から59までの値、 しかし閏秒のため61までの値は許される。

tm_min
    分数、0から59までの値。

tm_hour
    真夜中からの通算時間、0から23までの値。

tm_mday
    月はじめからの日数、1から31までの値。

tm_mon
    1月からの通算月数、0から11までの値。

tm_year
    1900 年からの通算年数。

tm_wday
    日曜日からの通算日数(曜日)。0から6までの値。

tm_yday
    1月1日からの通算日数、0から365までの値。

tm_isdst
    夏時間が有効かどうかのフラグ。 正の値ならば夏時間は有効になり、0ならば無効、負の値ならばこの情報には 意味がない。

関数 ctime() はカレンダー時刻 timep を

    "Wed Jun 30 21:49:08 1993\n"

という形式の文字列へ変換する。 曜日の略称は `Sun', `Mon', `Tue', `Wed', `Thu', `Fri', そして `Sat' である。 月の略称は `Jan', `Feb', `Mar', `Apr', `May', `Jun', `Jul', `Aug', `Sep', `Oct', `Nov', そして `Dec' である。 返り値は静的な領域に確保された文字列へのポインタである。この領域は 任意の日付・時刻関数の呼び出しによって上書きされうる。 またこの関数は大域変数 tzname に現在のタイムゾーンの情報を設定す る。

関数 gmtime() はカレンダー時刻 timep を 協定世界時(UTC)での時刻要素へ変換する。

関数 localtime() はユーザが明示したタイムゾーンでの時刻要素 へ変換する。 この関数は大域変数 tzname に現在のタイムゾーンの情報を設定する。 このとき、timezone は協定世界時(UTC)とローカル標準時との時差の秒 数と解釈され、 daylight が0でなければ標準US夏時間ルールが適用される。

関数 asctime() は時刻要素 timeptr を ctime() と同じ形式の文字列へ変換する。 返り値は静的な領域に確保された文字列へのポインタである。この領域は 任意の日付・時刻関数の呼び出しによって上書きされうる。

関数 mktime() は時刻要素をカレンダー時刻へ変換する。 この関数は時刻要素のうち tm_wday と tm_yday の値は無視し、 他の時刻要素からそれらを再計算する。 関数 mktime() を呼び出すと、大域変数 tzname が現在のタイム ゾーンに設定される。もし時刻要素をカレンダー時刻で表現することができな かったならば、mktime() は(time_t)(-1)を返し時刻要素 tm_wday と tm_yday は変更しない。

準拠
SVID 3, POSIX, BSD 4.3, ISO 9899

関連項目
date(1), gettimeofday(2), time(2), tzset(3), difftime(3), strftime(3)