Namespaces
Variants
Actions

Date and time library

From cppreference.com
< cpp
 
 
 

C++ includes support for two types of time manipulation:

Contents

[edit]Chrono library(since C++11)

The chrono library defines several main types as well as utility functions and common typedefs:

(since C++20)

[edit]Clocks

A clock consists of a starting point (or epoch) and a tick rate. For example, a clock may have an epoch of January 1, 1970 and tick every second. C++ defines several clock types:

Defined in header <chrono>
Defined in namespace std::chrono
wall clock time from the system-wide realtime clock
(class)[edit]
monotonic clock that will never be adjusted
(class)[edit]
the clock with the shortest tick period available
(class)[edit]
determines if a type is a Clock
(class template)(variable template)[edit]
(C++20)
Clock for Coordinated Universal Time (UTC)
(class)[edit]
(C++20)
Clock for International Atomic Time (TAI)
(class)[edit]
(C++20)
Clock for GPS time
(class)[edit]
(C++20)
Clock used for file time
(typedef)[edit]
(C++20)
pseudo-clock representing local time
(class)[edit]

[edit]Time point

A time point is a duration of time that has passed since the epoch of a specific clock.

Defined in header <chrono>
Defined in namespace std::chrono
(C++11)
a point in time
(class template)[edit]
traits class defining how to convert time points of one clock to another
(class template)[edit]
(C++20)
convert time points of one clock to another
(function template)[edit]

[edit]Duration

A duration consists of a span of time, defined as some number of ticks of some time unit. For example, "42 seconds" could be represented by a duration consisting of 42 ticks of a 1-second time unit.

Defined in header <chrono>
Defined in namespace std::chrono
(C++11)
a time interval
(class template)[edit]

[edit]Time of day (since C++20)

hh_mm_ss splits a duration representing time elapsed since midnight into hours, minutes, seconds, and fractional seconds, as applicable. It is primarily a formatting tool.

Defined in header <chrono>
Defined in namespace std::chrono
(C++20)
represents a time of day
(class template)[edit]
translates between a 12h/24h format time of day
(function)[edit]

[edit]Calendar (since C++20)

Defined in header <chrono>
Defined in namespace std::chrono
(C++20)
tag class indicating the last day or weekday in a month
(class)[edit]
(C++20)
represents a day of a month
(class)[edit]
(C++20)
represents a month of a year
(class)[edit]
(C++20)
represents a year in the Gregorian calendar
(class)[edit]
(C++20)
represents a day of the week in the Gregorian calendar
(class)[edit]
represents the nthweekday of a month
(class)[edit]
represents the last weekday of a month
(class)[edit]
(C++20)
represents a specific day of a specific month
(class)[edit]
represents the last day of a specific month
(class)[edit]
represents the nthweekday of a specific month
(class)[edit]
represents the last weekday of a specific month
(class)[edit]
(C++20)
represents a specific month of a specific year
(class)[edit]
represents a specific year, month, and day
(class)[edit]
represents the last day of a specific year and month
(class)[edit]
represents the nthweekday of a specific year and month
(class)[edit]
represents the last weekday of a specific year and month
(class)[edit]
(C++20)
conventional syntax for Gregorian calendar date creation
(function)[edit]

[edit]Time zone (since C++20)

Defined in header <chrono>
Defined in namespace std::chrono
(C++20)
describes a copy of the IANA time zone database
(class)[edit]
(C++20)
represents a linked list of tzdb
(class)[edit]
accesses and controls the global time zone database information
(function)[edit]
locates a time_zone based on its name
(function)[edit]
returns the current time_zone
(function)[edit]
(C++20)
represents a time zone
(class)[edit]
(C++20)
represents information about a time zone at a particular time point
(class)[edit]
(C++20)
represents information about a local time to UNIX time conversion
(class)[edit]
(C++20)
selects how an ambiguous local time should be resolved
(enum)[edit]
traits class for time zone pointers used by zoned_time
(class template)[edit]
(C++20)
represents a time zone and a time point
(class)[edit]
contains information about a leap second insertion
(class)[edit]
leap second insertion information
(class)[edit]
obtains leap second insertion information from a utc_time object
(function template)[edit]
represents an alternative name for a time zone
(class)[edit]
exception thrown to report that a local time is nonexistent
(class)[edit]
exception thrown to report that a local time is ambiguous
(class)[edit]

[edit]Literals (since C++14)

Defined in header <chrono>
Defined in inline namespace std::literals::chrono_literals
a std::chrono::year literal representing a particular year
(function)[edit]
a std::chrono::day literal representing a day of a month
(function)[edit]
a std::chrono::duration literal representing hours
(function)[edit]
a std::chrono::duration literal representing minutes
(function)[edit]
a std::chrono::duration literal representing seconds
(function)[edit]
a std::chrono::duration literal representing milliseconds
(function)[edit]
a std::chrono::duration literal representing microseconds
(function)[edit]
a std::chrono::duration literal representing nanoseconds
(function)[edit]

[edit]Chrono I/O (since C++20)

Defined in header <chrono>
Defined in namespace std::chrono
(C++20)
parses a chrono object from a stream
(function template)[edit]

[edit]Notes

Feature-test macro ValueStdFeature
__cpp_lib_chrono201510L(C++17)Rounding functions for std::chrono::duration and std::chrono::time_point
201611L(C++17)constexpr for all the member functions of std::chrono::duration and std::chrono::time_point
201907L(C++20)Calendars and Time zones
202306L(C++26)Hashing support for std::chrono value classes

[edit]C-style date and time library

Also provided are the C-style date and time functions, such as std::time_t, std::difftime, and CLOCKS_PER_SEC.

[edit]Example

#include <chrono>#include <iostream>   long Fibonacci(unsigned n){return n <2? n : Fibonacci(n -1)+ Fibonacci(n -2);}   int main(){// Measures and displays an execution time of a function call.constauto start{std::chrono::steady_clock::now()};constauto fb{Fibonacci(42)};constauto finish{std::chrono::steady_clock::now()};conststd::chrono::duration<double> elapsed_seconds{finish - start};   std::cout<<"Fibonacci(42): "<< fb <<"\nElapsed time: ";// std::cout << elapsed_seconds.count() << "s\n"; // Before C++20std::cout<< elapsed_seconds <<'\n';// C++20's chrono::duration operator<<   // Prints UTC and local time.constauto tp_utc{std::chrono::system_clock::now()};std::cout<<"Current time 'UTC' is: "<< tp_utc <<"\n""Current time 'Local' is: "<<std::chrono::current_zone()->to_local(tp_utc)<<'\n';}

Possible output:

Fibonacci(42): 267914296 Elapsed time: 0.728532s Current time 'UTC' is: 2025-02-10 06:22:39.420666960 Current time 'Local' is: 2025-02-10 09:22:39.420666960
close