namespace std::chrono {
template <class Duration>
class hh_mm_ss;
}
概要
hh_mm_ss
は、任意の時間間隔型の値を、時:分:秒それと可能であれば秒未満の時間に分割するクラスである。秒未満の時間間隔はある非負の10の乗数ベースの単位の値である。
Duration
テンプレートパラメータとしては、時間を分割する精度を指定する。
このクラスは、入力の時間間隔が負である場合でも動作するよう、負の時間間隔をモデル化する。ただし、負である場合でも、各フィールドは非負の時間間隔を返す。
テンプレートパラメータ制約
メンバ関数
構築/コピー/破棄
名前 | 説明 | 対応バージョン |
---|---|---|
(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, 10 fractional_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 ❌