日付と時間のユーティリティ - cppreference.com
日付と時間のユーティリティ
提供: cppreference.com
C++ には2種類の時間操作に対するサポートが含まれています。
chronoライブラリ、様々な精度で時間を追跡する柔軟な型のコレクション (std::chrono::time_point など)- C スタイルの日付と時間のライブラリ (std::time など)
std::chrono ライブラリ
chrono ライブラリは3つの主要な型、ユーティリティ関数、一般的な typedef を定義します。
- 時計
- 時点
- 時間
時計
時計は開始点 (エポック) と刻み速度から構成されます。 例えば、1970年1月1日のエポックと、1秒の刻みを持つ時計などを定義できます。 C++ ではいくつかの時計が定義されています。
ヘッダ | |
名前空間 | |
(C++11) |
システム全体のリアルタイムクロックをベースとする壁時計 (クラス) [edit] |
(C++11) |
調整されることの決してない単調な時計 (クラス) [edit] |
(C++11) |
利用可能な最も短い刻み幅を持つ時計 (クラス) [edit] |
(C++20) |
型が Clock かどうか調べます (クラステンプレート) (変数テンプレート) [edit] |
(C++20) |
協定世界時 (UTC) の Clock (クラス) [edit] |
(C++20) |
国際原子時 (TAI) の Clock (クラス) [edit] |
(C++20) |
GPS 時刻の Clock (クラス) [edit] |
(C++20) |
ファイル時刻のために使用される Clock (typedef) [edit] |
(C++20) |
ローカルタイムを表す擬似時計 (クラス) [edit] |
時点
時点は特定の時計のエポックから経過した時間です。
時間
時間は時の期間であり、何らかの時間単位の刻みの数として定義されます。 例えば「42秒」は1秒の単位を42個刻んだ時間として表すことができます。
ヘッダ | |
名前空間 | |
| 時の間隔 (クラステンプレート) [edit] | |
時刻
time_of_day は真夜中からの経過時間を表す duration を時、分、秒、および小数点以下の秒 (適用可能であれば) に分解します。 これは主にフォーマットのためのツールです。
カレンダー
ヘッダ | |
名前空間 | |
(C++20) |
月の最後の日または曜日を表すタグクラス (クラス) [edit] |
(C++20) |
日を表します (クラス) [edit] |
(C++20) |
月を表します (クラス) [edit] |
(C++20) |
グレゴリオ暦の年を表します (クラス) [edit] |
(C++20) |
グレゴリオ暦の曜日を表します (クラス) [edit] |
(C++20) |
月の n 回目の weekday を表します (クラス) [edit] |
(C++20) |
月の最後の weekday を表します (クラス) [edit] |
(C++20) |
特定の month の特定の day を表します (クラス) [edit] |
(C++20) |
特定の month の最後の日を表します (クラス) [edit] |
(C++20) |
特定の month の n 回目の weekday を表します (クラス) [edit] |
(C++20) |
特定の month の最後の weekday を表します (クラス) [edit] |
(C++20) |
特定の year の特定の month を表します (クラス) [edit] |
(C++20) |
特定の year、month および day を表します (クラス) [edit] |
(C++20) |
特定の year および month の最後の日を表します (クラス) [edit] |
(C++20) |
特定の year および month の n 回目の weekday を表します (クラス) [edit] |
(C++20) |
特定の year および month の最後の weekday を表します (クラス) [edit] |
(C++20) |
グレゴリオ暦の日付を作成するための便利な構文 (関数) [edit] |
タイムゾーン
ヘッダ | |
名前空間 | |
(C++20) |
IANAタイムゾーンデータベースのコピーを表します (クラス) [edit] |
(C++20) |
tzdb の連結リストを表します (クラス) [edit] |
| グローバルタイムゾーンデータベース情報をアクセスおよび制御します (関数) [edit] | |
(C++20) |
名前を元に time_zone を探します (関数) [edit] |
(C++20) |
現在の time_zone を返します (関数) [edit] |
(C++20) |
タイムゾーンを表します (クラス) [edit] |
(C++20) |
特定の時点のタイムゾーンに関する情報を表します (クラス) [edit] |
(C++20) |
ローカルタイムから UNIX タイムへの変換に関する情報を表します (クラス) [edit] |
(C++20) |
曖昧なローカルタイムの解決方法を選択します (列挙) [edit] |
(C++20) |
zoned_time によって使用されるタイムゾーンポインタのための特性クラス (クラステンプレート) [edit] |
(C++20) |
タイムゾーンと時刻を表します (クラス) [edit] |
(C++20) |
閏秒の挿入に関する情報を保持します (クラス) [edit] |
(C++20) |
タイムゾーンの代替名を表します (クラス) [edit] |
(C++20) |
ローカルタイムが存在しないことを報告するために投げられる例外 (クラス) [edit] |
(C++20) |
ローカルタイムが曖昧であることを報告するために投げられる例外 (クラス) [edit] |
chrono 入出力
ヘッダ | |
名前空間 | |
ストリームから chrono オブジェクトをパースします (関数テンプレート) [edit] | |
C スタイルの日付と時間のライブラリ
C スタイルの日付と時間の関数 (std::time_t, std::difftime, CLOCKS_PER_SEC など) も提供されます。
例
この例は関数呼び出しの実行時間に関する情報を表示します。
#include <iostream> #include <chrono> long fibonacci(unsigned n) { if (n < 2) return n; return fibonacci(n-1) + fibonacci(n-2); } int main() { auto start = std::chrono::steady_clock::now(); std::cout << "f(42) = " << fibonacci(42) << '\n'; auto end = std::chrono::steady_clock::now(); std::chrono::duration<double> elapsed_seconds = end-start; std::cout << "elapsed time: " << elapsed_seconds.count() << "s\n"; }
出力例:
f(42) = 267914296 elapsed time: 1.88232s