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

履歴 編集

class
<chrono>

std::chrono::tai_clock(C++20)

namespace std::chrono {
  class tai_clock;
}

概要

tai_clockは、TAI時間 (国際原子時、International Atomic Time) を表現するためのクロックである。

このクロックは、UTCよりも10秒進んでいる。そのため、1958-01-01 00:00:00 TAIと1957-12-31 23:59:50 UTCは等価である。

このクラスのnow()静的メンバ関数は、標準ではnoexcept(false)である。実装がnoexcept(true)である保証をしない限り、このクラスはTrivialClock要件を満たさない。

エポック

クロックごとの初期時間 (内部的にカウンタがあれば値ゼロ) をエポックと呼ぶ。

tai_clockのエポックは、1958年1月1日0時0分0秒である。

うるう秒の扱い

このクロックではうるう秒は挿入されず、うるう秒の数だけ時間が進む。そのため、UTCにうるう秒が挿入されるたびに、UTCはTAIよりも1秒ずつ遅れていく。

例として、2000年01月01日までにうるう秒は22回挿入されたため、TAIがUTCより10秒進んでいることも含めて、2000-01-01 00:00:00 UTCと2000-01-01 00:00:32 TAIは等価となる。

メンバ関数

静的メンバ関数

名前 説明 対応バージョン
now 現在日時を取得する C++20
to_utc TAI時間からUTC時間へ変換する C++20
from_utc UTC時間からTAI時間へ変換する C++20

メンバ型

名前 説明 対応バージョン
rep 時間間隔の内部表現となる符号付き算術型。具体的な型は未規定 C++20
period 時間の周期を表すratioratio<unspecified, unspecified> C++20
duration 時間間隔の型 duration<rep, period> C++20
time_point 時間の一点を指す型 time_point<utc_clock> C++20

メンバ定数

名前 説明 対応バージョン
static constexpr bool is_steady 逆行しないクロックかどうかを表すbool値。値は未規定。 C++20

#include <iostream>
#include <chrono>

namespace chrono = std::chrono;

int main()
{
  chrono::tai_clock::time_point tp = chrono::tai_clock::now();
  std::cout << tp << std::endl;
}

出力例

2019-10-24 11:15:47 TAI

バージョン

言語

  • C++20

処理系

  • Clang: (9.0時点で実装なし)
  • GCC: (9.2時点で実装なし)
  • Visual C++: (2019 Update 3時点で実装なし)

参照