Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::chrono::round(std::chrono::time_point)

      From cppreference.com
      <cpp‎ |chrono‎ |time point
       
       
      Date and time library
       
       
      Defined in header<chrono>
      template<class ToDuration,class Clock,class Duration>

      constexprstd::chrono::time_point<Clock, ToDuration>

          round(conststd::chrono::time_point<Clock, Duration>& tp);
      (since C++17)

      Returns the nearest time point totp representable inToDuration, rounding to even in halfway cases.

      The function does not participate in the overload resolution unlessToDuration is a specialization ofstd::chrono::duration andstd::chrono::treat_as_floating_point_v<typename ToDuration::rep> isfalse.

      Contents

      [edit]Parameters

      tp - time point to round to nearest

      [edit]Return value

      tp rounded to nearest time point using duration of typeToDuration, rounding to even in halfway cases.

      [edit]Possible implementation

      namespace detail{template<class>inlineconstexprbool is_duration_v=false;template<class Rep,class Period>inlineconstexprbool is_duration_v<std::chrono::duration<Rep, Period>>=true;} template<class To,class Clock,class FromDuration,class=std::enable_if_t<detail::is_duration_v<To>&&!std::chrono::treat_as_floating_point_v<typename To::rep>>>constexprstd::chrono::time_point<Clock, To> round(conststd::chrono::time_point<Clock, FromDuration>& tp){returnstd::chrono::time_point<Clock, To>{std::chrono::round<To>(tp.time_since_epoch())};}

      [edit]Example

      [edit]
      Run this code
      #include <chrono>#include <iostream>#include <string> template<typename TimePoint>std::string to_string(const TimePoint& time_point){returnstd::to_string(time_point.time_since_epoch().count());} int main(){usingnamespace std::literals::chrono_literals;using Sec=std::chrono::seconds; std::cout<<"Time point\t""Cast\t""Floor\t""Round\t""Ceil\n";std::cout<<"(ms)\t\t""(s)\t""(s)\t""(s)\t""(s)\n";for(constauto value_ms:{5432ms, 5678ms}){std::chrono::time_point<std::chrono::system_clock,std::chrono::milliseconds>            time_point_ms(value_ms); std::cout<< to_string(time_point_ms)<<"\t\t"<< to_string(std::chrono::time_point_cast<Sec>(time_point_ms))<<'\t'<< to_string(std::chrono::floor<Sec>(time_point_ms))<<'\t'<< to_string(std::chrono::round<Sec>(time_point_ms))<<'\t'<< to_string(std::chrono::ceil<Sec>(time_point_ms))<<'\n';}}

      Output:

      Time pointCastFloorRoundCeil(ms)(s)(s)(s)(s)5432555656785566

      [edit]See also

      converts a time point to another time point on the same clock, with a different duration
      (function template)[edit]
      converts a time_point to another, rounding up
      (function template)[edit]
      converts a time_point to another, rounding down
      (function template)[edit]
      converts a duration to another, rounding to nearest, ties to even
      (function template)[edit]
      (C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)
      nearest integer, rounding away from zero in halfway cases
      (function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/chrono/time_point/round&oldid=159670"

      [8]ページ先頭

      ©2009-2025 Movatter.jp