C 言語 | 高度な機能 | 時刻関数 - time(), localtime()
標準 C 関数を使ってコンピューターの時刻を取得できる。時刻は数値として保存されるため、日付として表示するにはローカル時刻へ変換する。
時刻を扱う
時刻に関する関数は time.h で宣言されている。システム時刻を取得するには time() を使用する。
time() 関数
time_t time(time_t *timer);
time_t は処理系が定義する算術型である。time() は timer を通じて結果を保存し、同じ値を返す。戻り値だけが必要な場合は NULL を渡せる。失敗すると (time_t)-1 を返す。
多くのシステムは、1970-01-01 00:00:00 UTC から経過した秒数で時刻を表す。time_t をローカルな暦の値へ変換するには localtime() を使用する。
localtime() 関数
struct tm *localtime(const time_t *timer);
localtime() は tm 構造体へのポインターを返す。
struct tm {
int tm_sec; /* 秒 */
int tm_min; /* 分 */
int tm_hour; /* 時 */
int tm_mday; /* 日 */
int tm_mon; /* 1 月からの月数 */
int tm_year; /* 1900 年からの年数 */
int tm_wday; /* 日曜日からの日数 */
int tm_yday; /* 1 月 1 日からの日数 */
int tm_isdst; /* 夏時間フラグ */
};
tm_mon は 0 から始まり、tm_year は 1900 年から数える。
コード 1
#include <stdio.h>
#include <time.h>
int main() {
struct tm *date;
const time_t t = time(NULL);
date = localtime(&t);
printf("%d/%d/%d %d:%d:%d\n",
date->tm_year + 1900, date->tm_mon + 1, date->tm_mday,
date->tm_hour, date->tm_min, date->tm_sec);
return 0;
}
このプログラムは現在時刻を取得し、ローカル時刻へ変換して年月日と時分秒を表示する。