<chrono>

Include the standard header <chrono> to define classes and functions that represent and manipulate time durations and time instants.

Beginning in Visual Studio 2015, the implementation of steady_clock has changed to meet the C++ Standard requirements for steadiness and monotonicity. steady_clock is now based on QueryPerformanceCounter() and high_resolution_clock is now a typedef for steady_clock. As a result, in Visual C++ steady_clock::time_point is now a typedef for chrono::time_point<steady_clock>; however, this is not necessarily the case for other implementations.

Syntax

#include <chrono>

Classes

Name Description
duration Class Describes a type that holds a time interval.
time_point Class Describes a type that represents a point in time.

Structs

Name Description
common_type Structure Describes specializations of template class common_type for instantiations of duration and time_point.
duration_values Structure Provides specific values for the duration template parameter Rep.
steady_clock struct Represents a steady clock.
system_clock Structure Represents a clock type that is based on the real-time clock of the system.
treat_as_floating_point Structure Specifies whether a type can be treated as a floating-point type.

Functions

Name Description
duration_cast Casts a duration object to a specified type.
time_point_cast Casts a time_point object to a specified type.

Operators

Name Description
operator- Operator for subtraction or negation of duration and time_point objects.
operator!= Inequality operator that is used with duration or time_point objects.
operator modulo Operator for modulo operations on duration objects.
operator* Multiplication operator for duration objects.
operator/ Division operator for duration objects.
operator+ Adds duration and time_point objects.
operator< Determines whether one duration or time_point object is less than another duration or time_point object.
operator<= Determines whether one duration or time_point object is less than or equal to another duration or time_point object.
operator== Determines whether two duration objects represent time intervals that have the same length, or whether two time_point objects represent the same point in time.
operator> Determines whether one duration or time_point object is greater than another duration or time_point object.
operator>= Determines whether one duration or time_point object is greater than or equal to another duration or time_point object.

Predefined Duration Types

For more information about ratio types that are used in the following typedefs, see <ratio>.

Typedef Description
typedef duration<long long, nano> nanoseconds; Synonym for a duration type that has a tick period of one nanosecond.
typedef duration<long long, micro> microseconds; Synonym for a duration type that has a tick period of one microsecond.
typedef duration<long long, milli> milliseconds; Synonym for a duration type that has a tick period of one millisecond.
typedef duration<long long> seconds; Synonym for a duration type that has a tick period of one second.
typedef duration<int, ratio<60> > minutes; Synonym for a duration type that has a tick period of one minute.
typedef duration<int, ratio<3600> > hours; Synonym for a duration type that has a tick period of one hour.

Literals

(C++11) The <chrono> header defines the following user-defined literals that you can use for greater convenience, type-safety and maintainability of your code. These literals are defined in the literals::chrono_literals inline namespace and are in scope when std::chrono is in scope.

Literal Description
chrono::hours operator "" h(unsigned long long Val) Specifies hours as an integral value.
chrono::duration<double, ratio<3600> > operator "" h(long double Val) Specifies hours as a floating-point value.
chrono::minutes (operator "" min)(unsigned long long Val) Specifies minutes as an integral value.
chrono::duration<double, ratio<60> > (operator "" min)( long double Val) Specifies minutes as a floating-point value.
chrono::seconds operator "" s(unsigned long long Val) Specifies minutes as an integral value.
chrono::duration<double> operator "" s(long double Val) Specifies seconds as a floating-point value.
chrono::milliseconds operator "" ms(unsigned long long Val) Specifies milliseconds as an integral value.
chrono::duration<double, milli> operator "" ms(long double Val) Specifies milliseconds as a floating-point value.
chrono::microseconds operator "" us(unsigned long long Val) Specifies microseconds as an integral value.
chrono::duration<double, micro> operator "" us(long double Val) Specifies microseconds as a floating-point value.
chrono::nanoseconds operator "" ns(unsigned long long Val) Specifies nanoseconds as an integral value.
chrono::duration<double, nano> operator "" ns(long double Val) Specifies nanoseconds as a floating-point value.

The following examples show how to use the chrono literals.

constexpr auto day = 24h;
constexpr auto week = 24h* 7;
constexpr auto my_duration_unit = 108ms;

Remarks

See also

Header Files Reference