std::chrono::time_point
From cppreference.com
                    
                                        
                    
                    
                                                            
                    |   Defined in header  <chrono>
  | 
||
|   template<      class Clock,   | 
(since C++11) | |
Class template std::chrono::time_point represents a point in time. It is implemented as if it stores a value of type Duration indicating the time interval from the start of the Clock's epoch. 
| 
 
  | 
(until C++23) | 
Member types
| Member type | Definition | 
  clock
 | 
  Clock, the clock on which this time point is measured
 | 
  duration
 | 
  Duration, a std::chrono::duration type used to measure the time since epoch
 | 
  rep
 | 
  Rep, an arithmetic type representing the number of ticks of the duration
 | 
  period
 | 
  Period, a std::ratio type representing the tick period of the duration
 | 
Member functions
|   constructs a new time point  (public member function)  | |
|    returns the time point as duration since the start of its clock   (public member function)  | |
|    modifies the time point by the given duration  (public member function)  | |
|    increments or decrements the duration   (public member function)  | |
|    [static]  | 
   returns the time point corresponding to the smallest duration  (public static member function)  | 
|    [static]  | 
   returns the time point corresponding to the largest duration  (public static member function)  | 
Non-member functions
|    (C++11)  | 
   performs add and subtract operations involving a time point   (function template)  | 
|    (C++11)(C++11)(removed in C++20)(C++11)(C++11)(C++11)(C++11)(C++20)  | 
   compares two time points   (function template)  | 
|    (C++11)  | 
   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 down  (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)  | 
Helper classes
|    specializes the std::common_type trait   (class template specialization)  | 
Example
Run this code
#include <algorithm> #include <iostream> #include <iomanip> #include <ctime> #include <chrono> void slow_motion() { static int a[] {1,2,3,4,5,6,7,8,9,10,11,12}; while (std::ranges::next_permutation(a).found) { } // generates 12! permutations } int main() { using namespace std::literals; // enables the usage of 24h, 1ms, 1s instead of // e.g. std::chrono::hours(24), accordingly const std::chrono::time_point<std::chrono::system_clock> now = std::chrono::system_clock::now(); const std::time_t t_c = std::chrono::system_clock::to_time_t(now - 24h); std::cout << "24 hours ago, the time was " << std::put_time(std::localtime(&t_c), "%F %T.\n") << std::flush; const std::chrono::time_point<std::chrono::steady_clock> start = std::chrono::steady_clock::now(); slow_motion(); const auto end = std::chrono::steady_clock::now(); std::cout << "Slow calculations took " << std::chrono::duration_cast<std::chrono::microseconds>(end - start).count() << "µs ≈ " << (end - start) / 1ms << "ms ≈ " // almost equivalent form of the above, but << (end - start) / 1s << "s.\n"; // using milliseconds and seconds accordingly }
Possible output:
24 hours ago, the time was 2021-02-15 18:28:52. Slow calculations took 2090448µs ≈ 2090ms ≈ 2s.
See also
|    (C++11)  | 
   a time interval   (class template)  |