std::chrono::floor(std::chrono::time_point)

From cppreference.com
< cpp‎ | chrono‎ | time point
 
 
 
 
 
Defined in header <chrono>
template <class ToDuration, class Clock, class Duration>
constexpr time_point<Clock, ToDuration> floor(const time_point<Clock, Duration>& tp);
(since C++17)

Returns the largest time point t representable in ToDuration that is smaller or equal to tp.

The function does not participate in the overload resolution unless ToDuration is an specialization of std::chrono::duration.

Contents

[edit] Parameters

tp - time point to round down

[edit] Return value

d rounded down to a the next time point using duration of type ToDuration.

[edit] Possible implementation

template <class T> struct is_duration : std::false_type {};
template <class Rep, class Period> struct is_duration<
    std::chrono::duration<Rep, Period>> : std::true_type {};
 
template <class To, class Clock, class FromDuration,
          class = std::enable_if_t<is_duration<To>{}>>
constexpr std::chrono::time_point<Clock, To>
    floor(const std::chrono::time_point<Clock, FromDuration>& tp)
{
    return std::chrono::time_point<Clock, To>{
        std::chrono::floor<To>(tp.time_since_epoch())};
}

[edit] Example

[edit] See also

converts a time point to another time point on the same clock, with a different duration
(function template)
converts a time_point to another, rounding up
(function template)
converts a time_point to another, rounding to nearest, ties to even
(function template)
converts a duration to another, rounding down
(function template)
nearest integer not greater than the given value
(function)
This site archives manuals. You are looking at an archived manual.
If you're looking for this specific version of this manual, you're in the right place. Otherwise, please check the version.