最終更新日時:
が更新

履歴 編集

class template
<chrono>

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

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

メンバ関数

構築/コピー/破棄

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

観測

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

算術演算

名前 説明 対応バージョン
operator+ 正のdurationを生成する C++11
operator- 負のdurationを生成する 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

非メンバ関数

名前 説明 対応バージョン
operator+ 加算(function template) C++11
operator- 減算(function template) C++11
operator* 乗算(function template) C++11
operator/ 除算(function template) C++11
operator% 剰余算(function template) C++11
operator== 等値判定を行う(function template) C++11
operator!= 非等値判定を行う(function template) C++11
operator< 左辺が右辺より小さいか判定を行う(function template) C++11
operator<= 左辺が右辺以下かの判定を行う(function template) C++11
operator> 左辺が右辺より大きいか判定を行う(function template) C++11
operator>= 左辺が右辺以上かの判定を行う(function template) C++11

リテラル

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

#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

処理系

参照