#include /* printf, sprintf使用 */ #include /* tm構造体, time, localtime, gmtime使用 */ /* 日時を "○年○月○日(○曜日) 00:00:00" にフォーマット 引数 : buf...文字列の格納場所、st...参照するtm構造体へのポインタ 戻り値 : 格納した文字列へのポインタ */ char *fmttm(char *buf, struct tm *st) { char *a[7] = {"日", "月", "火", "水", "木", "金", "土",}; sprintf(buf, "%d年%d月%d日(%s) %02d:%02d:%02d", st->tm_year + 1900, /* 年は +1900 が必要 */ st->tm_mon + 1, /* 月は +1 が必要 */ st->tm_mday, /* 日は 1...31 */ a[st->tm_wday], /* 週は 0...6 → 配列 *a[7] の文字列に変換 */ st->tm_hour, /* 時は 0...23 (0詰めの二桁で表示) */ st->tm_min, /* 分は 0...59 (0詰めの二桁で表示) */ st->tm_sec); /* 秒は 0...59 (0詰めの二桁で表示) */ return buf; } /* main 関数 */ int main(void) { time_t t; struct tm *ltm; struct tm *gtm; char s[50]; time(&t); /* 現在のシステム時間の取得 */ printf("%d\n", t); /* → 1123008275(time_t型のままの値)*/ ltm = localtime(&t); /* ローカル時間で tm構造体に変換 */ fmttm(s, ltm); /* 文字列へ変換 */ printf("%s\n", s); /* → "2005年8月3日(水) 03:44:35" */ gtm = gmtime(&t); /* 協定世界時で tm構造体に変換 */ fmttm(s, gtm); /* 文字列へ変換 */ printf("%s\n", s); /* → "2005年8月2日(火) 18:44:35" */ return 0; }