<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 構造体 |
duration と time_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_time を sys_time に変換した結果についてのタイム ゾーン情報への低レベルのインターフェイスを提供します。 |
sys_info |
sys_time を local_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_time が sys_time に変換され、結果があいまいになると、エラーがスローされます。 |
nonexistent_local_time |
local_time が sys_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 時間のいずれか、または day 、month 、weekday 、year などの間隔の型への入力ストリームを、指定された書式を使用して解析します。 |
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_clock の time_point を表します。 Duration など、たとえば file_time<seconds> ft; を指定します。 |
gps_seconds |
gps_clock に関連付けられている time_point によって表される、秒の gps_time<seconds>; A カウントの同意語です。 |
gps_time |
time_point<gps_clock, Duration> と同義。 gps_clock の time_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_time を time_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_clock の time_point を表します。 |
utc_seconds |
utc_time<seconds>; と同義 |
utc_time |
time_point<utc_clock, Duration> と同義。 Duration を提供します。たとえば utc_time<seconds> ut; です。 utc_clock の time_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;