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

履歴 編集

class
<chrono>

std::chrono::hh_mm_ss(C++20)

namespace std::chrono {
  template <class Duration>
  class hh_mm_ss;
}

概要

hh_mm_ssは、任意の時間間隔型の値を、時:分:秒それと可能であれば秒未満の時間に分割するクラスである。秒未満の時間間隔はある非負の10の乗数ベースの単位の値である。

Durationテンプレートパラメータとしては、時間を分割する精度を指定する。

このクラスは、入力の時間間隔が負である場合でも動作するよう、負の時間間隔をモデル化する。ただし、負である場合でも、各フィールドは非負の時間間隔を返す。

テンプレートパラメータ制約

  • Durationdurationクラステンプレートのインスタンスでない場合、プログラムは不適格となる

メンバ関数

構築/コピー/破棄

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

観測

名前 説明 対応バージョン
is_negative 負の時間かを判定する C++20
hours 時フィールドを取得する C++20
minutes 分フィールドを取得する C++20
seconds 秒フィールドを取得する C++20
subseconds 秒未満を取得する C++20
to_duration 時:分:秒、秒未満をもつdurationオブジェクトに変換する C++20
operator precision 時:分:秒、秒未満をもつdurationオブジェクトに明示的に変換する C++20

メンバ定数

名前 説明 対応バージョン
static constexpr bool fractional_width precisionによって表現される小数の小数桁数 C++20

メンバ型

名前 説明 対応バージョン
precision 小数も含めて表現できるduration型。duration<common_type_t<Duration::rep, seconds::rep>, ratio<1, 10fractional_width>> C++20

非メンバ関数

入出力

名前 説明 対応バージョン
operator<< 出力ストリームに出力する C++20

文字列フォーマット

名前 説明 対応バージョン
formatter std::formatterクラスの特殊化 C++20

#include <iostream>
#include <chrono>

namespace chrono = std::chrono;
using namespace std::chrono_literals;

int main()
{
  // コンストラクタ引数からテンプレートパラメータDurationを推論
  chrono::hh_mm_ss time2{15h + 30min + 20s}; // 秒単位
  std::cout << time2 << std::endl;

  // 時間間隔の型を明示的に指定
  chrono::hh_mm_ss<chrono::seconds> time3{65745s}; // 秒単位
  std::cout << time3 << std::endl;

  chrono::hh_mm_ss time4{65745123ms}; // ミリ秒単位
  std::cout << time4 << std::endl;
}

出力

15:30:20
18:15:45
18:15:45.123

バージョン

言語

  • C++20

処理系

  • Clang: 10.0 (出力ストリームなし)
  • GCC: 11.1 (出力ストリームなし)
  • Visual C++: (2019 Update 3時点で実装なし)