Scroll to navigation

std::chrono::time_point(3) C++ Standard Libary std::chrono::time_point(3)

NAME

std::chrono::time_point - std::chrono::time_point

Synopsis


Defined in header <chrono>
template<


class Clock, (since C++11)
class Duration = typename Clock::duration


> class time_point;


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.


Clock must meet the requirements for Clock
or be std::chrono::local_t (until C++23)
(since C++20).

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


constructor constructs a new time point
(public member function)
time_since_epoch returns the time point as duration since the start of its clock
(public member function)
operator+= modifies the time point by the given duration
operator-= (public member function)
operator++
operator++(int) increments or decrements the duration
operator-- (public member function)
operator--(int)
(C++20)
min returns the time point corresponding to the smallest duration
[static] (public static member function)
max returns the time point corresponding to the largest duration
[static] (public static member function)

Non-member functions


operator+ performs add and subtract operations involving a time
operator- point
(C++11) (function template)
operator==
operator!=
operator<
operator<=
operator>
operator>=
operator<=> compares two time points
(C++11) (function template)
(C++11)(removed in C++20)
(C++11)
(C++11)
(C++11)
(C++11)
(C++20)
time_point_cast converts a time point to another time point on the
(C++11) same clock, with a different duration
(function template)
floor(std::chrono::time_point) converts a time_point to another, rounding down
(C++17) (function template)
ceil(std::chrono::time_point) converts a time_point to another, rounding up
(C++17) (function template)
round(std::chrono::time_point) converts a time_point to another, rounding to
(C++17) nearest, ties to even
(function template)

Helper classes


std::common_type<std::chrono::time_point> specializes the std::common_type trait
(C++11) (class template specialization)
std::hash<std::chrono::time_point> hash support for std::chrono::time_point
(C++26) (class template specialization)

Example

// Run this code


#include <algorithm>
#include <chrono>
#include <ctime>
#include <iomanip>
#include <iostream>


void slow_motion()
{
static int a[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
// Generate Γ(13) == 12! permutations:
while (std::ranges::next_permutation(a).found) {}
}


int main()
{
using namespace std::literals; // enables literal suffixes, e.g. 24h, 1ms, 1s.


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();


std::cout << "Different clocks are not comparable: \n"
" System time: " << now.time_since_epoch() << "\n"
" Steady time: " << start.time_since_epoch() << '\n';


slow_motion();


const auto end = std::chrono::steady_clock::now();
std::cout
<< "Slow calculations took "
<< std::chrono::duration_cast<std::chrono::microseconds>(end - start) << " ≈ "
<< (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.
Different clocks are not comparable:
System time: 1666497022681282572ns
Steady time: 413668317434475ns
Slow calculations took 2090448µs ≈ 2090ms ≈ 2s.

See also


duration a time interval
(C++11) (class template)
year_month_day represents a specific year, month, and day
(C++20) (class)

2024.06.10 http://cppreference.com