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

履歴 編集

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
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間の共通の型を求める C++11
formatter std::formatterクラスの特殊化。文字列フォーマットの許可 C++20

#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

処理系

参照