- chrono[meta header]
- std::chrono[meta namespace]
- class[meta id-type]
- cpp20[meta cpp]
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回、負のうるう秒が0回挿入されたため、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 |
時間の周期を表すratio型 ratio<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;
}- now()[link tai_clock/now.md]
2019-10-24 11:15:47 TAI
- C++20
- Clang: (9.0時点で実装なし)
- GCC: (9.2時点で実装なし)
- Visual C++: (2019 Update 3時点で実装なし)