こんにちは、もがちゃんです。
今回は、前回の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");
}
}

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(土曜日)