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

履歴 編集

class
<chrono>

std::chrono::system_clock(C++11)

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

処理系

参照