namespace std {
tm* gmtime_r(const time_t* timer, tm* buf);
}
概要
経過秒 (time_t) を、UTCで表現されたカレンダー時間 (tm構造体) に変換する。
gmtimeと異なり、結果を利用者が用意したバッファbufに格納するため、スレッドセーフである。
C23で<time.h>に追加された関数であり、C++26で<ctime>に取り込まれた。
効果
timerが指すカレンダー時間を、UTCで表現された要素別の時間に変換し、bufが指す構造体に格納する。
戻り値
変換した要素別の時間 (buf) を指すポインタを返す。
指定された時間をUTCに変換できない場合、ヌルポインタを返す。
例
#include <ctime>
#include <print>
int main()
{
std::time_t t = std::time(nullptr);
std::tm result;
if (std::gmtime_r(&t, &result) != nullptr) {
std::println("{}", result.tm_year + 1900);
}
}
出力例
2026
バージョン
言語
- C++26
処理系
- Clang: 22 ❌
- GCC: 16.1 ❌
- Visual C++: 2026 Update 2 ❌
関連項目
gmtime: 経過秒からUTCのカレンダー時間を生成するlocaltime_r: 経過秒からローカル時間のカレンダー時間を生成する (バッファ指定)
参照
- P3348R4 C++26 should refer to C23 not C17
- C++26がC23を参照するようになり、この関数が
<ctime>に追加された
- C++26がC23を参照するようになり、この関数が