• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    class template
    <chrono>

    std::chrono::duration

    namespace std {
    namespace chrono {
      template <class Rep, class Period = ratio<1>>
      class duration;
    }}
    

    概要

    durationは、2つの時間の間隔を表現するための型である。

    durationのテンプレートパラメータであるratioの値によって、時間のためのあらゆる単位(ナノ秒、ミリ秒、秒, etc...)を表現することができる。

    標準では、以下の別名が提供される:

    型の別名 説明 対応バージョン
    nanoseconds ナノ秒 C++11
    microseconds マイクロ秒 C++11
    milliseconds ミリ秒 C++11
    seconds C++11
    minutes C++11
    hours C++11
    days C++20
    weeks C++20
    years C++20
    months C++20

    メンバ関数

    構築/コピー/破棄

    名前 説明 対応バージョン
    (constructor) コンストラクタ C++11
    ~duration() = default; デストラクタ C++11
    operator=(const duration&) = default; 代入演算子 C++11

    観測

    名前 説明 対応バージョン
    count 値を取得する C++11

    算術演算

    名前 説明 対応バージョン
    operator+ 正の符号 C++11
    operator- 負の符号 (符号反転する) C++11
    operator++ 値をインクリメントする C++11
    operator-- 値をデクリメントする C++11
    operator+= +の複合代入 C++11
    operator-= -の複合代入 C++11
    operator*= *の複合代入 C++11
    operator/= /の複合代入 C++11
    operator%= %の複合代入 C++11

    静的メンバ関数

    特別な値

    名前 説明 対応バージョン
    zero 初期値を取得 C++11
    min 最小値を取得 C++11
    max 最大値を取得 C++11

    メンバ型

    名前 説明 対応バージョン
    rep 値の数値型 Rep C++11
    period 値の周期を表す型 Period C++11

    非メンバ関数

    丸め演算

    名前 説明 対応バージョン
    duration_cast ゼロ方向への丸め C++11
    floor 負の無限大方向への丸め C++17
    ceil 正の無限大方向への丸め C++17
    round 偶数方向への丸め C++17

    その他数学関数

    名前 説明 対応バージョン
    abs 絶対値を求める C++17

    算術演算

    名前 説明 対応バージョン
    operator+ 加算 C++11
    operator- 減算 C++11
    operator* 乗算 C++11
    operator/ 除算 C++11
    operator% 剰余算 C++11

    比較演算

    名前 説明 対応バージョン
    operator== 等値比較を行う C++11
    operator!= 非等値比較を行う C++11
    operator<=> 三方比較を行う C++20
    operator< 左辺が右辺より小さいか比較を行う C++11
    operator<= 左辺が右辺以下かの比較を行う C++11
    operator> 左辺が右辺より大きいか比較を行う C++11
    operator>= 左辺が右辺以上かの比較を行う C++11

    入出力

    名前 説明 対応バージョン
    operator<< ストリームへの出力 C++20
    from_stream フォーマットを指定してストリームから入力 C++20

    リテラル

    名前 説明 対応バージョン
    ns ナノ秒リテラル C++14
    us マイクロ秒リテラル C++14
    ms ミリ秒リテラル C++14
    s 秒リテラル C++14
    min 分リテラル C++14
    h 時リテラル C++14

    共通型サポート

    名前 説明 対応バージョン
    common_type 異なるduration間の共通の型を求めるstd::common_typeの特殊化 C++11

    文字列フォーマットサポート

    名前 説明 対応バージョン
    formatter 文字列フォーマットの許可。std::formatterクラスの特殊化 C++20
    enable_nonlocking_formatter_optimization std::print()std::println()の効率的な実装を有効にする C++26

    ハッシュサポート

    名前 説明 対応バージョン
    template <class T> struct hash; hashクラスの先行宣言 C++26
    template<class Rep, class Period>
    struct hash<chrono::duration<Rep, Period>>;
    hashクラスのdurationに対する特殊化。hash<Rep>が有効な場合のみ有効 C++26

    #include <iostream>
    #include <chrono>
    #include <ctime>
    
    using std::chrono::system_clock;
    using std::chrono::seconds;
    
    void print(const system_clock::time_point& p)
    {
      std::time_t t = system_clock::to_time_t(p);
      char buf[26];  // 最低26バイトが必要
    # ifdef _MSC_VER
      // Visual Studioではctime_s()が推奨されている。
      ctime_s(buf, 26, &t);
    # else
      // ctime()のリエントラント版
      ctime_r(&t, buf);
    # endif
      // 出力された文字列には改行が含まれていることに注意
      std::cout << buf;
    }
    
    int main()
    {
      // 現在日時を取得
      system_clock::time_point now = system_clock::now();
    
      // 3秒後の日時を取得
      system_clock::time_point p = now + seconds(3);
    
      print(now);
      print(p);
    }
    

    出力例

    Tue Oct 16 16:25:08 2012
    Tue Oct 16 16:25:11 2012
    

    バージョン

    言語

    • C++11

    処理系

    参照