# <chrono>

The latest version of this topic can be found at <chrono>.

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

**(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>
```

### Literals

Literals in the <chrono> header are members of the literals::chrono_literals inline namespace. For more information, see chrono literals.

operator "" h(unsigned long long Val) operator "" h(long double Val) | Specifies that the value represents hours. |

operator "" min(unsigned long long Val) operator "" min(long double Val) | Specifies that the value represents minutes. |

operator "" s(unsigned long long Val)operator "" s(long double Val) | Specifies that the value represents seconds. |

operator "" ms(unsigned long long Val)operator "" ms(long double Val) | Specifies that the value represents milliseconds. |

operator "" us(unsigned long long Val)operator "" us(long double Val) | Specifies that the value represents microseconds. |

operator "" ns(unsigned long long Val)operator "" ns(long double Val) | Specifies that the value represents nanoseconds. |

### 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 Function | Casts a `duration` object to a specified type. |

time_point_cast Function | 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. |