<chrono>

期間と時点を表し、操作するクラスと関数を定義するために、標準ヘッダー <chrono> を含めます。

Visual Studio 2015 以降、steady_clock の実装が変更され、安定性と単調性のための C++ 標準の要件を満たすようになりました。

  • steady_clock は現在 QueryPerformanceCounter() に基づきます
  • high_resolution_clock は現在、Microsoft C++ の実装での steady_clock の typedef になったので、steady_clock::time_point は現在 chrono::time_point<steady_clock>typedef です。 ただし、これは必ずしも他の実装の場合とは限りません。

必要条件

ヘッダー:<chrono>

地域の議会では、タイム ゾーンに変更が加えられる場合があり、国際標準機関では、新しい閏秒をいつ考慮するかを指定します。 これらの変更のデータベースが Windows 10 に追加されました。 具体的な内容は次のとおりです。

機能 クライアントのバージョン サーバーのバージョン
2 回目のデータベース更新のうるう Windows 10 バージョン 1809 以降 Windows Server 2019 またはそれ以降
タイム ゾーンのサポート Windows 10 バージョン 1903/19H1 以降 Windows Server 2022 以降

古いバージョンの Windows でタイム ゾーン機能を使用すると、ランタイム エラーが発生します。

名前空間std:

Calendrical 型

名前 説明
common_type 構造体 durationtime_point のインスタンス化のクラス テンプレート common_type の特殊化を表します。
day クラス 月の日付。 たとえば、ある月の 25 日などです。
duration クラス 時間間隔。
duration_values 構造体 duration テンプレート パラメーター Rep に特定の値を指定します。
hh_mm_ss クラス duration を時間:分:秒に分割します。
last_spec 月の最後の曜日 (2020 年 2 月の最終火曜日) または月の最終日 (2019 年 4 月の最終日) などの月の最後の項目を示すために使用されます。
leap_second クラス 挿入されたうるう秒の日付と値。
leap_second_info 構造体 get_leap_second_info によって返されるデータ。
month クラス 年の月。 たとえば、July です。
month_day クラス 特定の月の特定の日。 たとえば、July 30 です。
month_day_last クラス 月の最終日。
month_weekday クラス 特定の月の n 番目の曜日。
month_weekday_last クラス 特定の月の n 番目の曜日。
time_point クラス 特定の時点。
weekday クラス 曜日。
weekday_last クラス 月の最後の曜日。
weekday_indexed クラス 曜日を、その月の曜日を表すインデックスに結合します。
year クラス グレゴリオ暦での年。
year_month クラス 年と月。 日付は指定されません。
year_month_day クラス 年、月、日。
year_month_day_last クラス 特定の月と年の最後の日。
year_month_weekday クラス 月の特定の年、月、および n 番目の平日。
year_month_weekday_last クラス 特定の年、月、月の最終曜日。

クロック

名前 説明
file_clock クラス ファイルのタイムスタンプを表すために使用される std::filesystem::file_time_type に使用されるクロックの別名。
gps_clock クラス GPS 時間を維持するクロック。 1980 年 1 月の最初の日曜日の 00:00:00 UTC からの時間を測定します。
high_resolution_clock 構造体 ナノ秒のティック期間を持つクロック。
local_t 構造体 time_point が現地時刻を表すことを示すために、time_point テンプレートの引数として使用される疑似時計。
steady_clock 構造体 steady クロック。 このクロックは、時間間隔を測定するために推奨されます。
system_clock 構造体 システムのリアルタイム クロックに基づくクロック。
tai_clock クラス 1958 年 1 月 1 日木曜日 00:00:00 からの国際アトミック時間 (タイ) を測定します。 このクロックでは、うるう秒は考慮されません。
utc_clock クラス 1970 年 1 月 1 日木曜日 00:00:00 UTC 以降の時間を測定します。 このクロックはうるう秒を考慮し、世界中で使用される時間標準です。

タイムゾーン

名前 説明
choose local_time から sys_time へのあいまいな変換を解決する方法を指定する列挙型。
local_info local_timesys_time に変換した結果についてのタイム ゾーン情報への低レベルのインターフェイスを提供します。
sys_info sys_timelocal_time に変換した結果についてのタイム ゾーン情報への低レベルのインターフェイスを提供します。
time_zone クラス 特定の地域におけるすべてのタイム ゾーンの遷移。
time_zone_link クラス time_zone の代替名。
tzdb 構造体 タイム ゾーン データベースのコピーを表します。
tzdb_list クラス タイム ゾーン データベースのシングルトン リスト。
zoned_time クラス time_zone と、指定した有効桁数を持つ time_point との組み合わせ。
zoned_traits 構造体 zoned_time と異なる既定のタイム ゾーンの関連付けに使用され、必要に応じてカスタム名を既定のタイム ゾーンにマップすることもできます。

例外

名前 説明
ambiguous_local_time local_timesys_time に変換され、結果があいまいになると、エラーがスローされます。
nonexistent_local_time local_timesys_time に変換され、結果が存在しない時間になると、エラーがスローされます。

関数

名前 説明
ceil(duration) 指定された型の duration オブジェクトの ceil を返します。
ceil(time_point) 指定された型の time_point オブジェクトの ceil を返します。
clock_cast ある時計の time_point を別のクロックの等価の time_point に変換します。
duration_cast duration オブジェクトを指定した型にキャストします。
floor(duration) 指定された型の duration オブジェクトの floor を返します。
floor(time_point) 指定された型の time_point オブジェクトの floor を返します。
from_stream() std::chrono 時間のいずれか、または daymonthweekdayyear などの間隔の型への入力ストリームを、指定された書式を使用して解析します。
get_leap_second_info leap_second_info 構造体を取得します。
is_am hours オブジェクトが AM かどうか。
is_pm hours オブジェクトが PM かどうか。
locate_zone 指定されたタイム ゾーンを取得します。
make12 12 時間形式で hours を返します。
make24 24 時間形式で hours を返します。
round(duration) 指定した型として丸められた duration オブジェクトを返します。
round(time_point) 指定した型として丸められた time_point オブジェクトを返します。
time_point_cast time_point オブジェクトを指定した型にキャストします。

タイム ゾーン関連

名前 説明
current_zone 現在のタイム ゾーンを取得します。
get_tzdb 最初のタイム ゾーン データベース エントリを取得します。
get_tzdb_list タイム ゾーン データベース エントリの一覧を取得します。
reload_tzdb 更新されたタイム ゾーン データベース エントリを取得します。
remote_version タイム ゾーン データベース エントリが更新されたかどうかを確認します。

演算子

名前 説明
operator- さまざまな <chrono> オブジェクトを減算または負数化します。
operator!= 各種 <chrono> オブジェクトで使用される非等値演算子。
operator modulo duration オブジェクトに対するモジュロ演算の演算子。
operator* duration オブジェクトの乗算演算子。
operator/ duration オブジェクトの除算演算子。
operator/ カレンダーの日付を作成するための構文を提供します。
operator+ さまざまな <chrono> オブジェクトを追加します。
operator< さまざまな <chrono> オブジェクトが別のオブジェクトよりも小さいかどうかを判断します。
operator<= さまざまな <chrono> オブジェクトが別のオブジェクト以下かどうかを判断します。
operator== さまざまな <chrono> オブジェクトが互いに等しいかどうかを判断します。
operator> さまざまな <chrono> オブジェクトが別のオブジェクトより大きいかどうかを判断します。
operator>= さまざまな <chrono> オブジェクトが別のオブジェクト以上かどうかを判断します。

Typedefs

次の typedef で使用される比率の種類の詳細については、「<ratio>」を参照してください。

便利な duration

名前 説明
typedef duration<long long, nano> nanoseconds; ティック間隔が 1 秒の 10 億分の 1 (1/1,000,000,000) の duration 型の同意語です。
typedef duration<long long, micro> microseconds; ティック間隔が 1 秒の 100 万分の 1 (1/1,000,000) の duration 型の同意語です。
typedef duration<long long, milli> milliseconds; ティック間隔が 1 秒の千分の 1 (1/1,000) の duration 型の同意語です。
typedef duration<long long> seconds; ティック間隔が 1 秒の duration 型の同意語です。
typedef duration<int, ratio<60>> minutes; ティック間隔が 1 分の duration 型の同意語です。
typedef duration<int, ratio<3600>> hours; ティック間隔が 1 時間の duration 型の同意語です。

便利な time_point

名前 説明
file_time time_point<file_clock, Duration> と同義。 file_clocktime_point を表します。 Duration など、たとえば file_time<seconds> ft; を指定します。
gps_seconds gps_clock に関連付けられている time_point によって表される、秒の gps_time<seconds>; A カウントの同意語です。
gps_time time_point<gps_clock, Duration> と同義。 gps_clocktime_point を表します。 Duration など、たとえば gps_time<milliseconds> gps; を指定します。
local_days local_time<days> と同義。 time_point によって表される、どのタイム ゾーンにも関連付けられていない日数。
local_seconds local_time<seconds> と同義。
local_time time_point<local_t, Duration> と同義。 タイム ゾーンにまだ関連付けられていないローカル時刻の time_point を表します。 Duration など、たとえば local_time<seconds> lt; を指定します。 local_time は、どこかのローカル時刻です。 コンピューターのクロックの現在のローカル時刻ではありません。 local_timetime_zone と組み合わせた場合にのみ、UTC 時刻に変換できる特定の時点、または特定のタイム ゾーンの時刻が取得されます。
sys_days sys_time<days> と同義。 system_clock に関連付けられている time_point で表される、system_clock のエポック以降の日数。
sys_seconds sys_time<seconds> と同義。 system_clock に関連付けられている time_point によって表される、system_clock のエポック (1970 年 1 月 1 日 00:00:00 UTC) からのうるう秒以外の秒数。
sys_time time_point<system_clock, Duration> と同義。 Duration など、たとえば sys_time<seconds> st; を指定します。 system_clock::now() から返された time_point を表します。 これは、UTC 時刻を厳密に近似した Unix 時刻を表します。
tai_seconds tai_time<seconds> と同義。 tai_clock に関連付けられている time_point で表される秒数。
tai_time time_point<tai_clock, Duration> と同義。 Duration を提供します。たとえば tai_time<seconds> tt; です。 tai_clocktime_point を表します。
utc_seconds utc_time<seconds>; と同義
utc_time time_point<utc_clock, Duration> と同義。 Duration を提供します。たとえば utc_time<seconds> ut; です。 utc_clocktime_point を表します。

型の特徴

名前 説明
clock_time_conversion クロック間で time_point を変換する方法を指定する特徴。
is_clock 型がクロックであるかどうかを確認します。
treat_as_floating_point duration が異なるティック期間を持つ別の duration に変換できるかどうかを確認します。

リテラル

(C++11)<chrono> ヘッダーでは、次のユーザー定義リテラルを定義します。これを使用することで、コードの利便性、タイプ セーフ、保守性が向上します。 これらのリテラルは literals::chrono_literals インライン名前空間で定義されており、std::chrono がスコープに含まれている場合にスコープに含まれます。

宣言 説明
hours operator "" h(unsigned long long Val) 時間を整数値として指定します。
duration<double, ratio<3600>> operator "" h(long double Val) 時間を浮動小数点値として指定します。
minutes (operator "" min)(unsigned long long Val) 分を整数値として指定します。
duration<double, ratio<60>> (operator "" min)( long double Val) 分を浮動小数点値として指定します。
seconds operator "" s(unsigned long long Val) 分を整数値として指定します。
duration<double> operator "" s(long double Val) 秒を浮動小数点値として指定します。
milliseconds operator "" ms(unsigned long long Val) ミリ秒を整数値として指定します。
duration<double, milli> operator "" ms(long double Val) ミリ秒を浮動小数点値として指定します。
microseconds operator "" us(unsigned long long Val) マイクロ秒を整数値として指定します。
duration<double, micro> operator "" us(long double Val) マイクロ秒を浮動小数点値として指定します。
nanoseconds operator "" ns(unsigned long long Val) ナノ秒を整数値として指定します。
duration<double, nano> operator "" ns(long double Val) ナノ秒を浮動小数点値として指定します。

次のいくつかの例では、<chrono> リテラルの使用方法を示します。

constexpr auto day = 24h;
constexpr auto week = 24h* 7;
constexpr auto my_duration_unit = 108ms;

関連項目

ヘッダー ファイル リファレンス