Share via


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_timeutc_timeに変換します。
now 静的。 現在の 時間を返します。
to_sys 静的。 utc_timesys_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_clocktime_point を表します。 期間を指定します。 std::chrono に定義されています

パブリック定数

名前 説明
[utc_clock::is_steady constant](#is_steady_constant) クロック型が一定かどうかを示します。 その値は false です。

必要条件

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

名前空間std::chrono:

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

from_sys

sys_timeutc_time に変換する静的メソッド。

template<class Duration>
static utc_time<common_type_t<Duration, seconds>>
from_sys(const sys_time<Duration>& t);

パラメーター

t
変換する sys_time

戻り値

sys_timet に最も近い時刻に設定された utc_time。 直接マッピングが存在しない場合、うるう秒の挿入中の time_point と、うるう秒の挿入前の最後の表現可能な sys_time の値が返されます。

to_sys

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