2014年8月13日水曜日

時刻の文字列

Linux等でCのプログラミングしていて時刻を表示したい場面は多々あります。
ソースの先頭にあらかじめ
#include <time.h>
を入れておけば
time_t t;
struct tm *s;
time(&t);
s=localtime(&t);
を実行後にsのメンバ変数を参照することで現在の日付や時刻が分かります。
ちなみにtm構造体は以下のようになっています。
struct tm {
  int tm_sec;      /* 秒(0-61)(60,61は閏秒対応) */
  int tm_min;      /* 分(0~59) */
  int tm_hour;     /* 時(0~23) */
  int tm_mday;     /* 日(1~31) */
  int tm_mon;      /* 月(0:1月,1:2月,...11:12月) */
  int tm_year;     /* 1900からの経過年数 */
  int tm_wday;     /* 曜日(0:日,1:月,...,6:土) */
  int tm_yday;     /* 1月1日からの経過日数(0~365) */
  int tm_isdst;    /* 夏時間(0:無効) */
};
が、文字列に整形するのが面倒という私のようなずぼらな人間用にctime()が用意されていて、
time_t t;
char buff[32];
if(time(&t)){
    if(!ctime_r(&t,buff))
        strcpy(buff,"no time\n");
}
else
    strcpy(buff,"no time\n");
printf("%s",buff);
のように書くことができます。
なおこの場合の文字列は
Sun Jan 23 01:23:45 1970
のような形式になります。

0 件のコメント:

コメントを投稿