- chrono[meta header]
- std::chrono[meta namespace]
- hh_mm_ss[meta class]
- function[meta id-type]
- cpp20[meta cpp]
constexpr hh_mm_ss() noexcept
: hh_mm_ss{Duration::zero()} {} // (1) C++20
constexpr explicit hh_mm_ss(Duration d); // (2) C++20
hh_mm_ss(const hh_mm_ss&); // (3) C++20
hh_mm_ss(hh_mm_ss&&); // (4) C++20- zero()[link /reference/chrono/duration/zero.md]
- (1) : デフォルトコンストラクタ
- (2) : 時間間隔を指定して時:分:秒、秒未満に分割する
- (3) : コピーコンストラクタ
- (4) : ムーブコンストラクタ
- (1) :
Duration型の値ゼロで時間を構築する - (2) :
precision型の精度でDuration dをもつhh_mm_ssオブジェクトを構築するd < Duration::zero()である場合、負の時間とみなしis_negative()がtrueを返すようにするduration_cast<chrono::hours>(abs(d))で時を構築するduration_cast<chrono::minutes>(abs(d) -hours())で分を構築するduration_cast<chrono::seconds>(abs(d) -hours()-minutes())で秒を構築するtreat_as_floating_point_v<precision::rep>がtrueである場合、秒未満はabs(d) -hours()-minutes()-seconds()で構築する。そうでなければ、duration_cast<precision>(abs(d) -hours()-minutes()-seconds())で秒未満を構築する
- (2) :
treat_as_floating_point_v<precision::rep>がtrueである場合、to_duration()はdを返し、そうでなければto_duration()はduration_cast<precision>(d)を返す
- (2) :
precision::repが整数型で、precision::periodがratio<1>である場合、subseconds()は常に0sとなる
#include <cassert>
#include <chrono>
namespace chrono = std::chrono;
using namespace std::chrono_literals;
int main()
{
chrono::hh_mm_ss time1{15h + 30min + 20s};
assert(time1.is_negative() == false);
assert(time1.hours() == 15h);
assert(time1.minutes() == 30min);
assert(time1.seconds() == 20s);
assert(time1.subseconds() == 0s);
// 負の時間
chrono::hh_mm_ss time2{-(15h + 30min + 20s)};
assert(time2.is_negative() == true);
assert(time2.hours() == 15h);
assert(time2.minutes() == 30min);
assert(time2.seconds() == 20s);
assert(time2.subseconds() == 0s);
// 秒未満をもつ時間
chrono::hh_mm_ss time3{15h + 30min + 20s + 123ms};
assert(time3.is_negative() == false);
assert(time3.hours() == 15h);
assert(time3.minutes() == 30min);
assert(time3.seconds() == 20s);
assert(time3.subseconds() == 123ms);
}- 15h[link /reference/chrono/duration/op_h.md]
- 30min[link /reference/chrono/duration/op_min.md]
- 20s[link /reference/chrono/duration/op_s.md]
- 0s[link /reference/chrono/duration/op_s.md]
- 123ms[link /reference/chrono/duration/op_ms.md]
- is_negative()[link is_negative.md]
- hours()[link hours.md]
- minutes()[link minutes.md]
- seconds()[link seconds.md]
- subseconds()[link subseconds.md]
- C++20
- Clang: 10.0
- GCC: 11.1
- Visual C++: (2019 Update 3時点で実装なし)