C言語 現在日時を表示するプログラム

現在日時を表示jするプログラムです。
時間に関する構造体tm構造体を使っています。tm構造体は、time.hに宣言されています。
補足説明として、西暦年のtm_yearは、1900年を起点としての年数が戻り値になりますので、1900を足して使用します。
曜日をあらわすtm_wdayは戻り値0~6の数値が日曜日~土曜日に対応します。下のサンプルのように曜日を表す文字配列の添え字として使うといいでしょう。
経過日数のtm_ydayは1月1日を0日としてその年の経過日数を返します。
サマータイムフラグtm_isdstはサマータイムに対応している地域でサマータイム中であれば、1をそうでない場合は0を返します。
// xGetLocalTime.c 現在の日時を表示する
#include <stdio.h>
#include <time.h>
int main(void)
{
time_t timer;
struct tm *t;
int year, month, day, hour, minute, second, wday;
char weekday[][4] = {“Sun”, “Mon”, “Tue”, “Wed”, “Thr”, “Fri”, “Sat”};
/* 現在時刻を取得 */
time(&timer);
/* 現在時刻を構造体に変換 */
t = localtime(&timer);
/* tm構造体の全ての要素を表示してみる */
printf(“tm構造体\n--------------------—-\n”);
printf(“%5d /秒\n”,t->tm_sec);
printf(“%5d /分\n”,t->tm_min);
printf(“%5d /時\n”,t->tm_hour);
printf(“%5d /日\n”,t->tm_mday);
printf(“%5d /月\n”,t->tm_mon);
printf(“%5d /西暦年\n”,t->tm_year);
printf(“%5d /曜日\n”,t->tm_wday);
printf(“%5d /経過日数\n”,t->tm_yday);
printf(“%5d /サマータイムフラグ\n”,t->tm_isdst);
/* 現在日時を表示 */
year = t->tm_year + 1900;
month = t->tm_mon + 1;
day = t->tm_mday;
hour = t->tm_hour;
minute = t->tm_min;
second = t->tm_sec;
wday = t->tm_wday;
printf(“\n%04d-%02d-%02d(%s) at %2d:%2d:%2d”,
year, month, day, weekday[wday], hour, minute, second);
return 0;
}
【実行結果】
tm構造体
--------------------—-
   34 /秒
   50 /分
   15 /時
    1 /日
    5 /月
  111 /西暦年
    3 /曜日
  151 /経過日数
    0 /サマータイムフラグ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です