◐ Shell
clean mode source ↗

日付と時間のユーティリティ - cppreference.com

日付と時間のユーティリティ

提供: cppreference.com

C++ には2種類の時間操作に対するサポートが含まれています。

  • chrono ライブラリ、様々な精度で時間を追跡する柔軟な型のコレクション (std::chrono::time_point など)
  • C スタイルの日付と時間のライブラリ (std::time など)

std::chrono ライブラリ

chrono ライブラリは3つの主要な型、ユーティリティ関数、一般的な typedef を定義します。

  • 時計
  • 時点
  • 時間

時計

時計は開始点 (エポック) と刻み速度から構成されます。 例えば、1970年1月1日のエポックと、1秒の刻みを持つ時計などを定義できます。 C++ ではいくつかの時計が定義されています。

ヘッダ <chrono> で定義

名前空間 std::chrono で定義

システム全体のリアルタイムクロックをベースとする壁時計
(クラス) [edit]
調整されることの決してない単調な時計
(クラス) [edit]
利用可能な最も短い刻み幅を持つ時計
(クラス) [edit]
型が Clock かどうか調べます
(クラステンプレート) (変数テンプレート) [edit]

(C++20)

協定世界時 (UTC) の Clock
(クラス) [edit]

(C++20)

国際原子時 (TAI) の Clock
(クラス) [edit]

(C++20)

GPS 時刻の Clock
(クラス) [edit]
ファイル時刻のために使用される Clock
(typedef) [edit]

(C++20)

ローカルタイムを表す擬似時計
(クラス) [edit]

時点

時点は特定の時計のエポックから経過した時間です。

時間

時間は時の期間であり、何らかの時間単位の刻みの数として定義されます。 例えば「42秒」は1秒の単位を42個刻んだ時間として表すことができます。

ヘッダ <chrono> で定義

名前空間 std::chrono で定義

時の間隔
(クラステンプレート) [edit]

時刻

time_of_day は真夜中からの経過時間を表す duration を時、分、秒、および小数点以下の秒 (適用可能であれば) に分解します。 これは主にフォーマットのためのツールです。

カレンダー

ヘッダ <chrono> で定義

名前空間 std::chrono で定義

(C++20)

月の最後の日または曜日を表すタグクラス
(クラス) [edit]

(C++20)

日を表します
(クラス) [edit]

(C++20)

月を表します
(クラス) [edit]

(C++20)

グレゴリオ暦の年を表します
(クラス) [edit]

(C++20)

グレゴリオ暦の曜日を表します
(クラス) [edit]
月の n 回目の weekday を表します
(クラス) [edit]
月の最後の weekday を表します
(クラス) [edit]

(C++20)

特定の month の特定の day を表します
(クラス) [edit]
特定の month の最後の日を表します
(クラス) [edit]
特定の month の n 回目の weekday を表します
(クラス) [edit]
特定の month の最後の weekday を表します
(クラス) [edit]
特定の year の特定の month を表します
(クラス) [edit]
特定の yearmonth および day を表します
(クラス) [edit]
特定の year および month の最後の日を表します
(クラス) [edit]
特定の year および month の n 回目の weekday を表します
(クラス) [edit]
特定の year および month の最後の weekday を表します
(クラス) [edit]

(C++20)

グレゴリオ暦の日付を作成するための便利な構文
(関数) [edit]

タイムゾーン

ヘッダ <chrono> で定義

名前空間 std::chrono で定義

(C++20)

IANAタイムゾーンデータベースのコピーを表します
(クラス) [edit]

(C++20)

tzdb の連結リストを表します
(クラス) [edit]
グローバルタイムゾーンデータベース情報をアクセスおよび制御します
(関数) [edit]
名前を元に time_zone を探します
(関数) [edit]
現在の time_zone を返します
(関数) [edit]

(C++20)

タイムゾーンを表します
(クラス) [edit]

(C++20)

特定の時点のタイムゾーンに関する情報を表します
(クラス) [edit]
ローカルタイムから UNIX タイムへの変換に関する情報を表します
(クラス) [edit]

(C++20)

曖昧なローカルタイムの解決方法を選択します
(列挙) [edit]
zoned_time によって使用されるタイムゾーンポインタのための特性クラス
(クラステンプレート) [edit]
タイムゾーンと時刻を表します
(クラス) [edit]
閏秒の挿入に関する情報を保持します
(クラス) [edit]
タイムゾーンの代替名を表します
(クラス) [edit]
ローカルタイムが存在しないことを報告するために投げられる例外
(クラス) [edit]
ローカルタイムが曖昧であることを報告するために投げられる例外
(クラス) [edit]

chrono 入出力

ヘッダ <chrono> で定義

名前空間 std::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