前回は、「現在の日付と時刻を表示する」プログラムをご紹介した。
今回は、C言語のきほん「現在の日付と時刻を協定世界時で表示する」プログラムをご紹介しよう。
協定世界時(UTC)とは
協定世界時 (UTC) は世界中の時間研究所により維持される時間目盛りで、高精密な原子時計によって決定されます。 UTC 時間は、1 日につき約ナノ秒 (10 億分の 1 秒) まで正確です。 UTC は、現在のグレゴリオ年に基づいており、緯度 0 度のグリニッジ子午線上の時刻を表します。
(IBMのWebサイトより)
なお、日本標準時(中央標準時)(JST)は、日本が東経135度にあるため協定世界時(UTC)より9時間進んでいる。
なお、本プログラムは、
Windows 11 Home(23H2)上で、Visual Studio Code(1.93.1)を使用して作成し、gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0で コンパイルしている。
//現在の日付・時刻を表示(UTC:協定世界時)
#include <time.h>
#include <stdio.h>
//日付・時刻を表示する関数
void put_date(const struct tm *timer)
{
char *wday_name[] = {"日","月","火","水","木","金","土"};
printf("%4d年%02d月%02d日(%s)%02d時%02d分%02d秒",
timer->tm_year + 1900,
timer->tm_mon + 1,
timer->tm_mday,
wday_name[timer->tm_wday],
timer->tm_hour,
timer->tm_min,
timer->tm_sec
);
}
int main(void)
{
time_t current;
struct tm *timer;
time(¤t);
timer = gmtime(¤t);
printf("現在の日付・時刻はUTCで");
put_date(timer);
printf("です\n");
return 0;
}
実行結果
現在の日付・時刻はUTCで2024年10月11日(金)11時48分04秒です
timerで指される暦時刻を協定世界時で表した要素別の時刻に変換するのがgmtime関数である。
(参考)新・明解C言語 中級編 柴田 望洋(著)
コメント