Skip to content

Latest commit

 

History

History
227 lines (171 loc) · 9.33 KB

duration.md

File metadata and controls

227 lines (171 loc) · 9.33 KB

duration

  • chrono[meta header]
  • std::chrono[meta namespace]
  • class template[meta id-type]
  • cpp11[meta cpp]
namespace std {
namespace chrono {
  template <class Rep, class Period = ratio<1>>
  class duration;
}}
  • ratio[link /reference/ratio.md]

概要

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);
}
  • system_clock[link system_clock.md]
  • to_time_t[link system_clock/to_time_t.md]
  • now()[link system_clock/now.md]
  • std::time_t[link /reference/ctime/time_t.md]

出力例

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

バージョン

言語

  • C++11

処理系

  • GCC: 4.7.0 [mark verified]
  • Visual C++: 2012 [mark verified], 2013 [mark verified], 2015 [mark verified]

参照