次の方法で共有


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_timetai_timeに変換します。
now 静的。 現在の国際原子時を返します。
to_utc 静的。 tai_timeutc_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_clocktime_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 です。

必要条件

ヘッダー:<chrono> (C++20 以降)

名前空間std::chrono:

コンパイラ オプション:/std:c++latest

from_utc

utc_timetai_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_timeutc_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_constantfalse です。 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 クラス
ヘッダー ファイル リファレンス