最終更新日時(UTC):
が更新

履歴 編集

function
<ctime>

std::timegm(C++26)

namespace std {
  time_t timegm(tm* timeptr);
}

概要

UTCで表現されたカレンダー時間 (tm構造体) を、経過秒 (time_t) に変換する。

mktimeがローカル時間を解釈するのに対し、この関数は入力をUTCとして解釈する。

C23で<time.h>に追加された関数であり、C++26で<ctime>に取り込まれた。

効果

timeptrが指す構造体のカレンダー時間 (UTCとして表現される) を、time関数が返す値と同じエンコーディングの経過秒に変換する。

tm_wdaytm_ydayの元の値は無視され、それ以外のメンバは規定の範囲に制限されない。変換に成功した場合、tm_wdaytm_ydayは適切に設定され、その他のメンバは規定の範囲に正規化される。

戻り値

指定されたカレンダー時間をtime_t型の値として返す。

カレンダー時間がtime_tで表現できない場合、もしくはtm_yearintで表現できない場合、(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

処理系

関連項目

  • mktime: ローカル時間のカレンダー時間から経過秒を生成する
  • gmtime: 経過秒からUTCのカレンダー時間を生成する

参照