【C言語入門】gmtimeの使い方

こんにちは、もがちゃんです。

今回は、前回のlocaltimeと同様、C言語で現在日時を扱う際に良く使用するgmtimeの使い方を簡単なサンプルプログラムとともに説明します。

gmtimeの使い方

#include <time.h>
struct tm *gmtime(const time_t *timer);

gmtimeの説明

gmtimeは、timerが指す現在日時を協定世界時(UTC)に変換します。

gmtime関数は、timerが指す暦時刻を、協定世界時(UTC)で表した要素別の時刻に変換する。

JISX3010 プログラム言語C
timer

ローカル時間に変換する現在日時情報のポインタを指定します。
(timeで取得した情報へのポインタを指定します。)

返却値

協定世界時(UTC)への変換が
成功した場合、変換結果(協定世界時(UTC)情報)へのポインタを返す。
失敗した場合、NULLポインタを返す。

struct tm

struct tmについては、以下の記事を参照してください。

gmtimeの使い方サンプル

現在日時をlocaltimeとgmtimeで変換した結果を表示する簡単なサンプルプログラムとその実行結果を紹介します。

サンプルプログラムとその実行結果
#include <stdio.h>
#include <time.h>

int main(void) {
        //timer == NULL指定時
        time_t timer = time(NULL);
        fprintf(stdout, "timer(NULL):%ld\n", timer);
        struct tm *tm = localtime(&timer);
        if(tm != NULL) {
            fprintf(stdout, "*** localtime ***\n");
            fprintf(stdout, "tm->tm_year [%d]\n" , tm->tm_year);
            fprintf(stdout, "tm->tm_mon  [%d]\n" , tm->tm_mon);
            fprintf(stdout, "tm->tm_mday [%d]\n" , tm->tm_mday);
            fprintf(stdout, "tm->tm_hour [%d]\n" , tm->tm_hour);
            fprintf(stdout, "tm->tm_min  [%d]\n" , tm->tm_min);
            fprintf(stdout, "tm->tm_sec  [%d]\n" , tm->tm_sec);
            fprintf(stdout, "tm->tm_wday [%d]\n" , tm->tm_wday);
            fprintf(stdout, "tm->tm_yday [%d]\n" , tm->tm_yday);
            fprintf(stdout, "tm->tm_isdst[%d]\n" , tm->tm_isdst);
        } else {
        	fprintf(stdout, "localtime error\n");
        }
        tm = gmtime(&timer);
        if(tm != NULL) {
            fprintf(stdout, "\n*** gmtime ***\n");
            fprintf(stdout, "tm->tm_year [%d]\n" , tm->tm_year);
            fprintf(stdout, "tm->tm_mon  [%d]\n" , tm->tm_mon);
            fprintf(stdout, "tm->tm_mday [%d]\n" , tm->tm_mday);
            fprintf(stdout, "tm->tm_hour [%d]\n" , tm->tm_hour);
            fprintf(stdout, "tm->tm_min  [%d]\n" , tm->tm_min);
            fprintf(stdout, "tm->tm_sec  [%d]\n" , tm->tm_sec);
            fprintf(stdout, "tm->tm_wday [%d]\n" , tm->tm_wday);
            fprintf(stdout, "tm->tm_yday [%d]\n" , tm->tm_yday);
            fprintf(stdout, "tm->tm_isdst[%d]\n" , tm->tm_isdst);
        } else {
        	fprintf(stdout, "gmtime error\n");
        }
}
localtimeとgmtimeを使ったサンプルプログラムの実行結果
localtimeとgmtimeを使ったサンプルプログラムの実行結果

gmtimeの使い方まとめ

  • timeで取得した現在日時情報を協定世界時(UTC)に変換したい場合にgmtimeを使用する
  • gmtimeで変換した結果は、struct tmのポインタで返却される。
  • struct tmの年情報(tm_year)は、1900年からの年
  • struct tmの月情報(tm_mon)は、0(1月)~11(12月)
  • struct tmの曜日情報(tm_wday)は、0(日曜日)~6(土曜日)

コメントを残す

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

CAPTCHA