tai_clock
クラス
このクロックは、1958 年 1 月 1 日木曜日の 00:00:00 以降の国際原子時を報告します。 このクロックでは、うるう秒は考慮されません。
構文
class tai_clock; // C++20
解説
このクロックは、国際原子時 (フランス語の temps atomique international から TAI とも呼ばれる) を報告します。 国際原子時では、多くの原子時間の加重平均を使用して時間を追跡します。
TAI クロックが刻む時間は、UTC 時刻とは異なります。 違いは、UTC 時刻と UT1 (太陽時間) の差を互いに +- 0.9 秒以内に維持するために、UTC 時刻には、うるう秒が追加される場合がある点です。 原子時計が刻む時間と、地球の自転を測定して刻まれる時間との間に、徐々に不一致が生じていきます。 不一致が生じるのは、地球の自転速度が不規則であるためです。 1.5 年ごとに約 1 秒の割合で徐々に速度が低下し、ときには、速度が加速する場合もあると考えられています。 TAI 時間では、この不一致は追跡されません。 この記事の執筆時点では、TAI 時刻は UTC 時刻よりも 37 秒進んでいます。 これは、1972 年の開始時点での最初の 10 秒の差異と、1972 年から挿入されたうるう秒のためです。
このクロックのエポック、つまり、時刻の測定の開始日時 1958-01-01 00:00:00
です。
メンバー
名前 | 説明 |
---|---|
from_utc |
静的。 utc_time を tai_time に変換します。 |
now |
静的。 現在の国際原子時を返します。 |
to_utc |
静的。 tai_time を utc_time に変換します。 |
非メンバー
名前 | 説明 |
---|---|
from_stream |
指定した形式を使用して、指定したストリームから tai_clock を解析します。 |
get_leap_second_info |
指定時間はうるう秒が挿入された時刻を表しているのかどうかに関する情報と、1970 年 1 月 1 日から指定期間までの間のすべてのうるう秒の合計を取得します。 |
operator<< |
指定したストリームに tai_time を出力します。 |
便利な型のエイリアス
名前 | 説明 |
---|---|
tai_clock::duration |
Microsoft の実装では、duration<long long, ratio<1, 10'000'000> の同意語です。 これは、100 ナノ秒単位で測定された時間を表します。 |
tai_clock::period |
Microsoft の実装では、ratio<1, 10'000'000> の同意語です。 期間の各ティック間の秒 (100 ナノ秒) 単位の時間を表します。 |
tai_clock::rep |
このクロックの tai_clock::duration の整数単位を表す型 (long long ) の同意語です。 |
tai_clock::time_point |
time_point<tai_clock> と同義。 このクロックの time_point を表す場合に使用します。 |
関連項目
名前 | 説明 |
---|---|
tai_time |
template <class Duration> using tai_time = time_point<tai_clock, Duration> と同義。 tai_clock の time_point を表します。 Duration を指定します。 std::chrono に定義されています |
tai_seconds |
tai_clock に関連付けられている time_point によって表される、秒の using tai_seconds = tai_time<seconds> A カウントの同意語です。 std::chrono に定義されています |
パブリック定数
名前 | 説明 |
---|---|
tai_clock::is_steady constant |
クロック型が一定かどうかを示します。 その値は false です。 |
要件
Header: <chrono>
(C++20 以降)
名前空間: std::chrono
コンパイラ オプション: /std:c++latest
from_utc
utc_time
を tai_time
に変換する静的メソッド。
template <class Duration>
static tai_time<common_type_t<Duration, seconds>>
from_utc(const utc_time<Duration>& t) noexcept;
パラメーター
t
変換する utc_time
。
戻り値
t
と同等の utc_time
を表す tai_time
。 これは、UTC クロックのエポックからの時間を取得し、378691210s
を追加することで計算されます (378691210s == sys_days{1970y/January/1} - sys_days{1958y/January/1} + 10s
)。
to_utc
tai_time
を utc_time
に変換する静的メソッド。
template<class Duration>
static utc_time<common_type_t<Duration, seconds>>
to_utc(const tai_time<Duration>& t) noexcept;
パラメーター
t
変換する tai_time
。
戻り値
t
と同等の tai_time
を表す utc_time
。 計算方法は utc_time<common_type_t<Duration, seconds>>{t.time_since_epoch()} - 378691210s
です (378691210s == sys_days{1970y/January/1} - sys_days{1958y/January/1} + 10s
)。
is_steady
クロックの型が安定しているかどうかを指定する静的な値。 Microsoft の実装では、is_steady_constant
は false
です。 tai_clock
は一定ではないため、このクロックを使用してイベントの前の時間、イベントの後の時間を取得し、それらを減算してイベントの期間を取得することはできません。その間に、クロックが調整されている可能性があるためです。
static const bool is_steady = false;
now
現在の TAI 時刻を返す静的メソッドです。
static time_point now() noexcept;
戻り値
現在時刻を表す time_point
オブジェクト。 返される時点は、実質的には from_utc(utc_clock::now())
です。
関連項目
<chrono>
file_clock class
high_resolution_clock
local_t
構造体
steady_clock
構造体
system_clock
構造体
utc_clock
クラス
ヘッダー ファイル リファレンス