C言語 現在時間を得る time localtime_s

現在時間を取得して表示するプログラムです。

#include <stdio.h>
#include <time.h>

int main(void)
{
    time_t tmGenzai = time(NULL);
    struct tm pGenzai;

    localtime_s(&pGenzai, &tmGenzai);
  
    printf("現在の日時は%d年%d月%d日%d時%d分%d秒です。\n",
        pGenzai.tm_year + 1900, pGenzai.tm_mon + 1, pGenzai.tm_mday,
        pGenzai.tm_hour, pGenzai.tm_min, pGenzai.tm_sec);
}

まず初めに、時間処理関数を使うために、time.h をインクルードします。

次に現在時間を取得しています。

time_t tmGenzai = time(NULL);
localtime_s(&pGenzai, &tmGenzai);

time 関数で取得した段階では、
データが年月日、時分秒などに分かれていないので、
localtime_s 関数で分けてあげます。

すると、struct tm 構造体にそれぞれのデータが格納されますので、
そのまま表示しています。

このプログラムでは、
localtime_s関数が失敗した時の処理は書いていません。

“年”は、現在年数より-1900引かれた数が格納されているので、
1900を足して表示しています。

“月”は、0 = 1月になっているので、+1 してから表示しています。

その他、曜日は表示していませんが、tm_wdayメンバに
“0 = 日曜日” のような情報でしっかりと格納されています。