namespace std {
time_t timegm(tm* timeptr);
}
概要
UTCで表現されたカレンダー時間 (tm構造体) を、経過秒 (time_t) に変換する。
mktimeがローカル時間を解釈するのに対し、この関数は入力をUTCとして解釈する。
C23で<time.h>に追加された関数であり、C++26で<ctime>に取り込まれた。
効果
timeptrが指す構造体のカレンダー時間 (UTCとして表現される) を、time関数が返す値と同じエンコーディングの経過秒に変換する。
tm_wdayとtm_ydayの元の値は無視され、それ以外のメンバは規定の範囲に制限されない。変換に成功した場合、tm_wdayとtm_ydayは適切に設定され、その他のメンバは規定の範囲に正規化される。
戻り値
指定されたカレンダー時間をtime_t型の値として返す。
カレンダー時間がtime_tで表現できない場合、もしくはtm_yearがintで表現できない場合、(time_t)(-1)を返す。
例
#include <ctime>
#include <print>
int main()
{
std::tm t{};
t.tm_year = 2026 - 1900; // 2026年
t.tm_mon = 0; // 1月
t.tm_mday = 1; // 1日
std::time_t sec = std::timegm(&t);
std::println("{}", sec);
}
出力
1767225600
バージョン
言語
- C++26
処理系
- Clang: 22 ❌
- GCC: 16.1 ❌
- Visual C++: 2026 Update 2 ❌
関連項目
mktime: ローカル時間のカレンダー時間から経過秒を生成するgmtime: 経過秒からUTCのカレンダー時間を生成する
参照
- P3348R4 C++26 should refer to C23 not C17
- C++26がC23を参照するようになり、この関数が
<ctime>に追加された
- C++26がC23を参照するようになり、この関数が