utc_clock
クラス
グリニッジ標準協定世界時グリニッジ標準時 (GMT) または Zulu 時刻と呼ばれる場合がある時刻 (UTC) のクロック。 現地時刻は、タイム ゾーンに応じて UTC 時刻から調整されます。
構文
class utc_clock; // C++20
解説
このクロックは、1970 年 1 月 1 日木曜日の UTC 00:00:00 以降の時刻を測定します。 このクロックはうるう秒を示し、世界中の市民時間の基礎となります。
UTC 時刻の速度は、原子時計を使用して時刻を追跡する国際原子時刻 (TAI) に基づいて行われます。 ただし、UTC 時刻と UT1 (太陽時間) の差を +- 0.9 秒内に維持するために、うるう秒が UTC 時刻に追加される場合があります。
原子時計によって保持される時間と、地球の回転を追跡して保持される時間との間に不一致があります。 これは、地球の回転速度が不規則であり、一般に、1.5 年ごとに約 1 秒遅くなるためです (ただし、地球の回転速度が増す場合があります)。 うるう秒の調整では、UTC 追跡時間が 1 日の平均長の 1 秒以内に保持されます。
この記事の執筆時点では、1972 年にうるう秒を挿入する方法が開始された後、27 秒のうるう秒が追加されています。 International Earth Rotation and Reference Systems Service (IERS) は、うるう秒が追加される時間を決定します。 うるう秒の追加は、うるう秒挿入と呼ばれます。 うるう秒が挿入された場合、時間は午前 0 時に近い 23 時間 59 分 59 秒から 23 時間 59 分 60 秒 (挿入されたうるう秒) に進み、次に 0 時間 0 分 0 秒 (午前 0 時) に進みます。 これまでに、うるう秒は 6 月 30 日または 12 月 31 日に追加されました。
定義上、UTC 時刻は TAI (アトミックタイム) の 10 秒遅れで開始されます。 1972 年に TAI 時間に 10 秒が追加され、その時点で累積されたうるう秒に対応しました。 それ以降、さらに 27 秒のうるう秒が挿入されたと想定すると、現在 UTC 時刻は、TAI (アトミック クロック) 時刻より 37 秒遅れになります。
メンバー
名前 | 説明 |
---|---|
from_sys |
静的。 sys_time を utc_time に変換します。 |
now |
静的。 現在の 時間を返します。 |
to_sys |
静的。 utc_time を sys_time に変換します。 |
非メンバー
名前 | 説明 |
---|---|
from_stream |
指定した形式を使用して、指定したストリームから utc_time を解析します。 |
get_leap_second_info |
提供された時刻が、うるう秒が挿入された時刻を指定するかどうかを示す leap_second_info を取得します。 また、1970 年 1 月 1 日から指定された期間の間のすべてのうるう秒の合計も含まれます。 |
operator<< |
指定したストリームに utc_time を出力します。 |
便利な型のエイリアス
名前 | 説明 |
---|---|
utc_clock::duration |
Microsoft の実装では、duration<system_clock::rep, system_clock::period> の同意語です。 これは、100 ナノ秒単位で測定された時間を表します。 |
utc_clock::period |
Microsoft の実装では、これを system_clock::period の同意語として定義しています。 期間の各ティック間の秒 (100 ナノ秒) 単位の時間を表します。 |
utc_clock::rep |
このクロックの utc_clock::duration の整数単位を表す型 (long long ) の同意語です。 |
utc_clock::time_point |
time_point<utc_clock> と同義。 このクロックの time_point を表す場合に使用します。 |
関連項目
名前 | 説明 |
---|---|
utc_seconds |
using utc_seconds = utc_time<seconds>; と同義 |
utc_time |
template<class Duration> using utc_time = time_point<utc_clock, Duration>; の同意語 は、utc_clock の time_point を表します。 期間を指定します。 std::chrono に定義されています |
パブリック定数
名前 | 説明 |
---|---|
[utc_clock::is_steady constant] (#is_steady_constant) |
クロック型が一定かどうかを示します。 その値は false です。 |
要件
Header: <chrono>
(C++20 以降)
名前空間: std::chrono
コンパイラ オプション: /std:c++latest
from_sys
sys_time
を utc_time
に変換する静的メソッド。
template<class Duration>
static utc_time<common_type_t<Duration, seconds>>
from_sys(const sys_time<Duration>& t);
パラメーター
t
変換する sys_time
。
戻り値
utc_time
sys_time
t
に最も近い時間に設定されます。 直接マッピングが存在しない場合、うるう秒の挿入中の time_point と、うるう秒の挿入前の最後の表現可能な sys_time
の値が返されます。
to_sys
utc_time
を sys_time
に変換する静的メソッド。
template<class Duration>
static sys_time<common_type_t<Duration, seconds>>
to_sys(const utc_time<Duration>& t);
パラメーター
t
変換する utc_time
。
戻り値
sys_time
と同等の時点に設定された t
。 直接マッピングが存在しない場合、うるう秒が挿入された時点を表す t
は、うるう秒が挿入される前の最後の表現可能な値です。 うるう秒の追加は、うるう秒挿入と呼ばれます。 うるう秒が挿入された場合、時間は午前 0 時に近い 23 時間 59 分 59 秒から 23 時間 59 分 60 秒 (挿入されたうるう秒) に進み、次に 0 時間 0 分 0 秒 (午前 0 時) に進みます。 過去には、6 月 30 日または 12 月 31 日にうるう秒が追加されました。
is_steady
クロックの型が安定しているかどうかを指定する静的な値。 Microsoft の実装では、is_steady_constant
は false
です。 utc_clock
は一定ではないため、このクロックを使用してイベントの前の時間、イベントの後の時間を確実に取得し、それらを減算してイベントの期間を取得することはできません。これは、その間にクロックが調整されている可能性があるためです。
static const bool is_steady = false;
now
現在の UTC 時刻を返す静的メソッドです。 返される時間にはうるう秒が含まれます。
static time_point now() noexcept;
戻り値
現在時刻を表す time_point
オブジェクト。 返される時点は、実質的には from_sys(system_clock::now())
です。
関連項目
<chrono>
file_clock class
gps_clock class
high_resolution_clock
local_t
構造体
steady_clock
構造体
system_clock
構造体
tai_clock
クラス
ヘッダー ファイル リファレンス