• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    class
    <chrono>

    std::chrono::system_clock

    namespace std {
    namespace chrono {
      class system_clock;
    }}
    

    概要

    system_clockは、システム時間を表現するためのクロックである。

    このクラスは、time_t型と互換性がある。

    エポック

    クロックごとの初期時間 (内部的にカウンタがあれば値ゼロ) をエポックと呼ぶ。

    system_clockのエポックは、以下である:

    • C++17 以前の場合、system_clock のエポックがどの時間を指しているかは未規定だが、ほとんどの処理系は UNIX 時間(1970年1月1日0時0分0秒)を指している
    • C++20 以降の場合、system_clock のエポックは必ず UNIX 時間(1970年1月1日0時0分0秒)を指す

    うるう秒の扱い

    このクロックでは、うるう秒が除外されて (うるう秒が挿入された分だけ値が引かれる) 時間がカウントされる。

    タイムゾーン

    このクロックのタイムゾーンは、UNIX時間を使用していることからUTCである。このクロックの時間点をそのまま出力すると、ローカルタイムゾーンの日時ではなくUTCタイムゾーンの日時が出力されることに注意。

    utc_clockはうるう秒をカウントするが、このクロックはカウントしない違いがある。

    分解能

    このクロックの分解能は未規定。実装では以下のようになっている:

    • Clang (libc++) : ナノ秒
    • GCC (libstdc++) : マイクロ秒
    • Visual C++ : ナノ秒

    メンバ関数

    静的メンバ関数

    名前 説明 対応バージョン
    now 現在日時を取得する C++11
    to_time_t time_pointからtime_tへ変換する C++11
    from_time_t time_tからtime_pointへ変換する C++11

    メンバ型

    名前 説明 対応バージョン
    rep 時間間隔の内部表現となる符号付き算術型。具体的な型は未規定 C++11
    period 時間の周期を表すratio C++11
    duration 時間間隔の型 C++11
    time_point 時間の一点を指す型 C++11

    メンバ定数

    名前 説明 対応バージョン
    static const bool is_steady 逆行しないクロックかどうかを表すbool値。値は未規定 C++11まで
    static constexpr bool is_steady 逆行しないクロックかどうかを表すbool値。値は未規定 C++14から

    #include <iostream>
    #include <chrono>
    #include <ctime>
    
    using namespace std::chrono;
    
    int main()
    {
      // 現在日時を取得
      system_clock::time_point p = system_clock::now();
    
      // time_tに変換して出力
      std::time_t t = system_clock::to_time_t(p);
      std::cout << std::ctime(&t) << std::endl;
    }
    

    出力例

    Tue Oct 16 15:00:08 2012
    

    バージョン

    言語

    • C++11

    処理系

    参照