現在の時刻を取得するには、time()
関数を使用します。
#include <sys/types.h>
#include <time.h>
time_t time(time_t *tloc);
time_t は sys/types.h の中で typedef により unsigned int または unsigned long として定義されています。
引数 tlocには time_t 型の変数のポインタを指定します。time()
関数により、tloc で指定した time_t 型の変数の中に1970年1月1日0時0分0秒からの経過秒数が格納されます。
戻り値には 1970年1月1日0時0分0秒からの経過秒数が返されます。
tloc に格納される値と time() 関数の戻り値は同じです。引数に NULL を指定することもできます。
time_t t;
t = time(&t);
time_t t;
t = time(NULL); /* 引数にNULL指定 */
time_t t;
time(&t); /* 戻り値は無視 */
時刻を表すデータ型には、time_t
と struct tm
があります。これらを相互に変換したり、文字列に変換する時刻関数群が用意されています。これらの時刻関数の相関図を次に示します。
たとえば、time()
関数で取得した現在の時刻(time_t
型)を localtime()
関数を用いて struct tm
型に変換することができます。time_t
型の時刻は、ctime()
関数を用いて文字列に変換することができます。
#include <time.h>
char *ctime(const time_t *clock);
struct tm *localtime(const time_t *clock);
struct tm *gmtime(const time_t *clock);
char *asctime(const struct tm *tm);
時刻の取得に成功した場合は、エポック時刻(1970年1月1日0時0分0秒 UTC)からの経過時間を秒単位で返す。
時刻の取得に失敗した場合は、-1 を返す。また、errno にエラー番号が設定される。