C++ chrono

发布时间 2023-06-04 17:14:07作者: Optima_Xu

std::ratio

表示一个单位时间。

template <
    std::intmax_t Num,
    std::intmax_t Denom = 1
> class ratio;

Num 是时间的分子,Denom 是时间的分母。

std::milli = std::ratio<1, 1000>
std::centi = std::<1, 100>
std::deci = std::<1, 10>

std::chrono::duration

表示时间间隔。

template<
    class Rep,
    class Period = std::ratio<1>
> class duration;

成员函数 count() 返回 Rep 类型的 Period 数量
如果要返回 duration 表示的秒数,可以用 dra.count() * dra::period::num / dra::period::den,注意类型转换。
成员函数 duration_cast < T1 > T2 表示将 T2 类型的 duration 转化为 T1 类型。

std::chrono::milliseconds = std::chrono::duration<int,std::milli >
std::chrono::seconds = std::chrono::duration<int>
std::chrono::minutes = std::chrono::duration<int,std::ratio<60> >
std::chrono::hours = std::chrono::duration<int,std::ratio<3600> >

std::chrono::time_point

表示时间点。

template <
    class Clock,
    class Duration = typename Clock::duration
> class time_point

time_since_epoch() 返回 duration 类型的从纪元时间开始的时间长度。
time_point_cast T2 类型转化。
Clock 一般使用 steady_clock,不会受系统时间的调节影响。