<chrono>
functions
abs(duration)
Returns d
if d >= d.zero()
; otherwise returns -d
.
Syntax
template <class Rep, class Period>
constexpr duration<Rep, Period> abs(duration<Rep, Period> d ); // C++17
Parameters
Rep
The type of the internal representation of the source duration
d
.
Period
A std::ratio
type representing the ratio of one second to the source Rep
type (that is, seconds per Rep
).
d
The source duration
object.
Return value
The absolute value of d
.
Example: abs(duration)
// compile using: /std:c++latest
#include <chrono>
#include <iostream>
int main()
{
std::cout << abs(-24h);
return 0;
}
24h
ceil(duration)
Returns the smallest representable duration
in the target type that's greater than or equal to the specified duration
.
Syntax
template<class ToDuration, class Rep, class Period>
constexpr ToDuration
ceil(const duration<Rep, Period>& d); // C++17
Parameters
ToDuration
The target duration
type. Constrained as a specialization of duration
.
Rep
The type of the internal representation of the source duration
d
.
Period
A std::ratio
type representing the ratio of one second to the source Rep
type (that is, seconds per Rep
).
d
The source duration
object.
Return value
Returns the smallest duration
representable in ToDuration
that's greater than or equal to the parameter d
.
Remarks
ceil
doesn't participate in overload resolution unless the ToDuration
type is an instance of a duration
.
ceil(time_point)
Returns the smallest time point representable in the target duration
that's greater than or equal to the specified time point.
Syntax
template<class ToDuration, class Clock, class Duration>
constexpr time_point<Clock, ToDuration>
ceil(const time_point<Clock, Duration>& t); // C++17
Parameters
ToDuration
The target duration
type. Constrained as a specialization of duration
.
Clock
The common clock type of the result and the source parameter tp
.
Duration
The duration
type of tp
.
tp
The source time_point
object.
Return value
Returns the smallest time point representable using ToDuration
that's greater than or equal to tp
. Effectively, time_point<Clock, ToDuration>(ceil<ToDuration>(tp.time_since_epoch()));
.
Remarks
ceil
doesn't participate in overload resolution unless the ToDuration
type is an instance of a duration
.
clock_cast
Converts a time_point
for one clock to an equivalent time_point
for another clock.
Syntax
template <class DestClock, class SourceClock, class Duration>
auto clock_cast(const time_point<SourceClock, Duration>& t); // C++20
Parameters
DestClock
The clock type to convert the time_point
to.
Duration
The duration
of the SourceClock
, or one that you specify.
SourceClock
The clock type that the time_point
to convert is based on.
t
The time_point
to convert.
Return value
A time_point
equivalent to t
, but specific to DestClock
.
Remarks
The parameters SourceClock
and Duration
can be inferred via class template argument deduction when not explicitly passed. For example, given clock_cast<utc_clock>(file_clock::now())
, SourceClock
is deduced to be file_clock
, and Duration
is deduced to be file_clock::duration
.
From the following list of well-formed clock conversions, the one that requires the fewest conversion steps to get from the SourceClock
to the DestClock
is selected.
clock_time_conversion<DestClock, SourceClock>{}(t)
clock_time_conversion<DestClock, system_clock>{}(
clock_time_conversion<system_clock, SourceClock>{}(t))
clock_time_conversion<DestClock, utc_clock>{}(
clock_time_conversion<utc_clock, SourceClock>{}(t))
clock_time_conversion<DestClock, utc_clock>{}(
clock_time_conversion<utc_clock, system_clock>{}(
clock_time_conversion<system_clock, SourceClock>{}(t)))
clock_time_conversion<DestClock, system_clock>{}(
clock_time_conversion<system_clock, utc_clock>{}(
clock_time_conversion<utc_clock, SourceClock>{}(t)))
For more information about what clock_time_conversion
does, see clock_time_conversion
struct.
Example clock_cast
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
utc_clock::time_point t = clock_cast<utc_clock>(file_clock::now());
std::cout << t;
return 0;
}
2021-10-11 22:58:17.8540720
current_zone
Gets the current time zone object.
Syntax
const time_zone* current_zone(); // C++20
Return value
Returns a pointer to a time_zone
as if by a call to get_tzdb().current_zone()
. It throws a runtime_error
exception if it's the first reference to the time zone database and the time zone database can't be initialized.
duration_cast
Casts a duration
to the specified target duration
type.
Syntax
template <class ToDuration, class Rep, class Period>
constexpr ToDuration
duration_cast(const duration<Rep, Period>& d); // C++11
Parameters
ToDuration
The target duration
type. Constrained as a specialization of duration
.
Rep
The type of the internal representation of the source duration
d
.
Period
A std::ratio
type representing the ratio of one second to the source Rep
type (that is, seconds per Rep
).
d
The source duration
object to cast to the target duration
type.
Return value
An object of type ToDuration
that represents the duration
d
. It's truncated if necessary to fit into the target type. The result of casting a floating-point duration
to an integral duration
is undefined if the source contains a NaN
, an infinity, or is too large for representation in the target duration
.
Remarks
You don't need to use duration_cast
to convert between duration
types when the source period is exactly divisible by the target period, such as when you convert minutes to seconds. Also, you don't need it to convert between floating-point duration
types. You can do both conversions by using ordinary casts or the duration
constructors.
duration_cast
doesn't participate in overload resolution unless ToDuration
is an instance of duration
. It does all conversions by using static_cast
instead of implicit conversions. Multiplications and divisions are avoided if possible. For example, when the compiler knows that the common ratio of the target and source periods has a numerator or denominator of 1. Computations are done in the widest type available, then converted as if by static_cast
to the result type when finished.
Example duration_cast
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
seconds s(1);
std::cout << duration_cast<microseconds>(s) << '\n';
std::cout << duration_cast<nanoseconds>(s) << '\n';
return 0;
}
1000000us
1000000000ns
floor(duration)
Returns the greatest representable duration
in the target type that's less than or equal to the specified duration
.
Syntax
template<class ToDuration, class Rep, class Period>
constexpr ToDuration
floor(const duration<Rep, Period>& d); // C++17
Parameters
ToDuration
The target duration
type. Constrained as a specialization of duration
.
Rep
The type of the internal representation of the source duration
d
.
Period
A std::ratio
type representing the ratio of one second to the source Rep
type (that is, seconds per Rep
).
d
The source duration
object.
Return value
Returns the greatest duration
representable in ToDuration
that's less than or equal to the parameter d
.
Remarks
floor
doesn't participate in overload resolution unless the ToDuration
type is an instance of a duration
.
floor(time_point)
Returns the largest time point representable in the target duration
that's less than or equal to the specified time point.
Syntax
template<class ToDuration, class Clock, class Duration>
constexpr time_point<Clock, ToDuration>
floor(const time_point<Clock, Duration>& tp); // C++17
Parameters
ToDuration
The target duration
type. Constrained as a specialization of duration
.
Clock
The common clock type of the result and the source parameter tp
.
Duration
The duration
type of tp
.
tp
The source time_point
object.
Return value
Returns the largest time point representable using ToDuration
that's less than or equal to tp
. Effectively, time_point<Clock, ToDuration>(floor<ToDuration>(tp.time_since_epoch()));
.
Remarks
floor
doesn't participate in overload resolution unless the ToDuration
type is an instance of a duration
.
from_stream
Parse the input stream into one of the std::chrono
time or interval types such as day
, month
, month_day
, weekday
, year
, year_month
, year_month_day
, and so on, using the specified format.
If the parse fails, is.setstate
(ios_base::failbit
) is called and the output parameter isn't modified.
// 1) day - C++20
template<class charT class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
day& d, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 2) duration - C++20
template<class charT, class traits, class Rep, class Period, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
duration<Rep, Period>& dur, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 3) file_time - C++20
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
file_time<Duration>& ft, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 4) gps_time - C++20
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
gps_time<Duration>& gt, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 5) local_time - C++20
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
local_time<Duration>& lt, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 6) month - C++20
template<class charT, class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
month& m, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 7) month_day - C++20
template<class charT, class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
month_day& md, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 8) utc_time - C++20
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
utc_time<Duration>& ut, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 9) sys_time - C++20
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
sys_time<Duration>& st, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 10) tai_time - C++20
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
tai_time<Duration>& tt, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 11) weekday - C++20
template<class charT, class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
weekday& wd, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 12) year - C++20
template<class charT, class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
year& y, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 13) year_month - C++20
template<class charT, class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
year_month& ym, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 14) year_month_day - C++20
template<class charT, class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
year_month_day& ymd, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
Template parameters
Alloc
The type that represents the allocator object that handles the string's allocation and deallocation of memory.
charT
The data type of a single character to be read from the stream and stored in the string. The C++ Standard Library provides specializations of this class template, with the type definitions string
for elements of type char
, wstring
, for wchar_t
, u16string
for char16_t
, and u32string
for char32_t
.
traits
Describes charT
attributes for the basic_string
and basic_istream
specialization.
Rep
The internal representation type of a duration
type.
Period
A std::ratio
type representing the ratio of one second to the source Rep
type (that is, seconds per Rep
).
Duration
The duration
type used for time specialization.
Parameters
abbrev
If abbrev
isn't nullptr
, and the format specifier %Z
is specified, and the parse is successful, then abbrev
contains the parsed value.
d
If the parse is successful, contains the parsed day when the function returns.
dur
The duration
parsed from the stream.
fmt
The format string used to match the input. See Parse format strings for the list of parse formatting options.
ft
The file_time
parsed from the stream.
gt
The gps_time
parsed from the stream.
is
The input stream to parse.
lt
The local_time
parsed from the stream.
m
The month
parsed from the stream.
md
The month_day
parsed from the stream.
offset
If offset
isn't nullptr
, and the format specifier %z
or modified variant such as %Ez
or %0z
is specified, and the parse is successful, then offset
points to the parsed value.
st
The sys_time
parsed from the stream.
tt
The tai_time
parsed from the stream.
ut
The utc_time
parsed from the stream.
wd
The weekday
parsed from the stream.
y
The year
parsed from the stream.
ym
The year_month
parsed from the stream.
ymd
The year_month_day
parsed from the stream.
Return value
The input stream, is
Example: from_stream
// compile using: /std:c++latest
#include <chrono>
#include <iostream>
int main()
{
std::istringstream str{ "22" };
std::basic_istream<char> stream{ str.rdbuf() };
std::chrono::day d;
std::chrono::from_stream(stream, "%d", d);
std::cout << d << "\n";
return 0;
}
22
Remarks
7) If %Z
is used and successfully parsed, that value will be assigned to *abbrev
if abbrev
is non-null. If %z
(or a modified variant) is used and successfully parsed, that value will be assigned to *offset
if offset
is non-null.
12) If %Z
is used and successfully parsed, that value will be assigned to *abbrev
if abbrev
is non-null. If %z
(or a modified variant) is used and successfully parsed, that value will be assigned to *offset
if offset
is non-null.
from_stream
format strings
The format may be one of these strings:
Date
Specifier | Description |
---|---|
%D |
Equivalent to %m/%d/%y |
%F % NF |
Equivalent to %Y-%m-%d . If modified with a width N , the width is applied to only %Y . |
%x %Ex |
The locale's date representation.%Ex parses the locale's alternate date representation.1 |
Day
Specifier | Description |
---|---|
%d %Od % Nd %e %Oe % Ne |
The day of the month as a decimal number.% Nd specifies the maximum number of characters to read, for example %1d . If N isn't specified, the default is 2.Leading zeroes are permitted but not required. %Od (letter O , not zero) interprets the locale's alternative representation of the day of the month.1 %e is equivalent to %d and can be modified like %d .1 |
Day of the week
Specifier | Description |
---|---|
%a %A |
The locale's full or abbreviated case-insensitive weekday name.%A is equivalent to %a |
%u % Nu |
The ISO weekday as a decimal number (1-7), where Monday is 1. % Nu specifies the maximum number of characters to read, for example %2u . If N isn't specified, the default is 1. Leading zeros are permitted but not required. |
%w % Nw %Ow |
The weekday as a decimal number (0-6), where Sunday is 0.% Nw specifies the maximum number of characters to read, for example %2w . If N isn't specified, the default is 1.Leading zeroes are permitted but not required. %Ow (letter O , not zero) interprets the locale's alternative representation.1 |
Week/day of the year
Specifier | Description |
---|---|
%j % Nj |
If the type being formatted is a specialization of duration, the decimal number of days without padding. Otherwise, the day of the year as a decimal number. Jan 1 is 001 . If the result is fewer than three digits, it's left-padded with 0 (zero) to three digits.% Nj specifies the maximum number of characters to read, for example %2j . If N isn't specified, the default is 3. Leading digits are allowed but aren't required. |
%U % NU %OU |
The week number of the year as a decimal number. The first Sunday of the year is the first day of week 01 . Days of the same year before that week are in week 00 . If the result is a single digit, it's prefixed with 0 (zero).% NU specifies the maximum number of characters to read, for example %2U . If N isn't specified, the default is 2.Leading zeros are permitted but no required. %OU (letter O , not zero) parses the locale's alternative representation.1 |
%W % NW %OW |
The week number of the year as a decimal number. The first Monday of the year is the first day of week 01 . Days of the same year before that week are in week 00 .If the result is a single digit, it's prefixed with 0 (zero).% NW specifies the maximum number of characters to read, for example %2W . If N isn't specified, the default is 1Leading zeros are permitted but no required. %OW (letter O , not zero) parses the locale's alternative representation.1 |
Time of day
Specifier | Description |
---|---|
%H % NH %OH |
The hour (24-hour clock) as a decimal number. If the result is a single digit, it's prefixed with a 0 (zero).% NH specifies the maximum number of characters to read, for example, %1H . If N isn't specified, the default is 2.Leading zeroes are permitted but not required. %OH (letter O , not zero) parses the locale's alternative representation.1 |
%I % NI %OI |
The hour (12-hour clock) as a decimal number. If the result is a single digit, it's prefixed with 0 (zero).% NI specifies the maximum number of characters to read, for example, %1I . If N isn't specified, the default is 2.Leading zeroes are permitted but not required. %OI (letter O , not zero) parses the locale's alternative representation.1 |
%M % NM %OM |
The minutes as a decimal number. If the result is a single digit, it's prefixed with 0 (zero).% NM specifies the maximum number of characters to read, for example %3M . If N isn't specified, the default is 2.Leading zeroes are permitted but not required. %OM (letter O , not zero) parses the locale's alternative representation.1 |
%S % NS %OS |
Seconds as a decimal number. If the number of seconds is less than 10, the result is prefixed with 0 (zero). If the precision of the input can't be exactly represented with seconds, then the format is a decimal floating-point number with a fixed format. It has a microseconds precision if the function can't convert the floating-point decimal seconds within 18 fractional digits. Otherwise, its precision matches the precision of the input. The character for the decimal point is localized according to the locale.% NS specifies the maximum number of characters to read, for example %3S . If N isn't specified, the default is 2.Leading zeroes are permitted but not required. %OS (letter O , not zero) parses the locale's alternative representation.1 |
%p |
The locale's equivalent of the AM/PM designations associated with a 12-hour clock. |
%r |
The locale's 12-hour clock time. |
%R |
Equivalent to %H:%M . |
%T |
Equivalent to "%H:%M:%S" . |
%X , %EX |
The locale's time representation.%EX parses the alternate locale's time representation.1 |
Month
Specifier | Description |
---|---|
%b , %B , %h |
The locale's full or abbreviated month name. If the value doesn't contain a valid month, a format_error exception is thrown.%h is equivalent to %b . |
%m , % Nm , %Om |
The month as a decimal number. Jan is 1.% Nm specifies the maximum number of characters to read, for example, %3m . If N isn't specified, the default is 2.Leading zeroes are permitted but not required. %Om (letter O , not zero) interprets the locale's alternative representation.1 |
Year
Specifier | Description |
---|---|
%C , % NC , %EC |
The century as a decimal number.% NC specifies the maximum number of characters to read, for example, %1N . If N isn't specified, the default is 2. Leading zeroes are permitted but not required.%EC interprets the locale's alternative representation of the century. |
%y , % Ny , %Ey , %Oy |
The last two decimal digits of the year. If the century isn't otherwise specified (for example, by using %C ), values in the range [69, 99] are presumed to refer to the years 1969 to 1999, and values in the range [00, 68] are presumed to refer to the years 2000 to 2068.% Ny specifies the maximum number of characters to read. If N isn't specified, the default is 2.Leading zeroes are permitted but not required. %Ey and %Oy (letter O , not zero) interpret the locale's alternative representation.1 |
%Y , % NY , %EY , |
The year as a decimal number. If the result is fewer than four digits, it's left-padded with 0 (zero) to four digits.% NY specifies the maximum number of characters to read. If N isn't specified, the default is 4.%EY parses the locale's alternative full year representation.1 |
ISO 8601 week-based year
In ISO 8601, weeks begin with Monday. The first week of the year must include January 4 and include the first Thursday of the year.
Specifier | Replacement |
---|---|
%g % Ng |
The last two decimal digits of the ISO week-based year. If the result is a single digit, is prefixed by 0 (zero). % Ng specifies the maximum number of characters to read, for example, %1g . If N isn't specified, the default is 2 |
%G % NG |
The ISO week-based year as a decimal number. If the result is fewer than four digits, it's left-padded with 0 (zero) to four digits. % NG specifies the maximum number of characters to read, for example, %1G . If N isn't specified, the default is 4 |
%V %OV % NV |
The ISO week-based week number as a decimal number. If the result is a single digit, it's prefixed with 0 (zero). % NV specifies the maximum number of characters to read, for example, %1V . If N isn't specified, the default is 2%OV (letter O , not zero) parses the locale's alternative representation.1 |
General
Specifier | Replacement |
---|---|
%% |
Matches the % character |
%c %Ec |
The locale's date and time representation.%Ec interprets the locale's alternate date and time representation.1 |
%n |
Matches a new-line character |
%t |
Matches zero or one whitespace character |
%z %Ez %Oz |
The offset from UTC in the format [+|-]hh[mm] . For example, -0430 refers to 4 hours 30 minutes behind UTC, and 04 refers to 4 hours ahead of UTC.%Ez and %Oz (letter O , not zero) parse a : between the hours and minutes and render leading zeroes on the hour field optional1: [+|-]h[h][:mm] . For example, -04:30 refers to 4 hours 30 minutes behind UTC, and 4 refers to 4 hours ahead of UTC. |
%Z |
The time zone abbreviation or name. A single word is parsed. This word can only contain alphanumeric characters from the basic source character set, or one of _ , / , - , or + . |
Flags by type
Class | Specifier/Flag |
---|---|
day |
d, e |
duration |
j, H, I, M, S, r, R, T, p, (q, Q are only for format, not parsing) |
file_time |
Z, z, c, x, X, D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w, H, I, M, S, r, R, T, p |
gps_time |
Z, z, c, x, X, D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w, H, I, M, S, r, R, T, p |
hh_mm_ss |
H, I, M, S, r, R, T, p |
local_time |
c, x, X, D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w, H, I, M, S, r, R, T, p |
local_time_format_t |
z, Z, c, x, X, D, F, Y, C, y, b, B, h, m, d, e, a, A, u, w, H, I, M, S, r, R, T, p, g, G, U, V, W |
local_info |
z, Z |
month |
b, h, B, m |
month_day |
B, d, j, e, b, h, m |
month_day_last |
B, d, j, e, b, h, m |
month_weekday |
b, B, h, m, a, A, u, w |
month_weekday_last |
b, B, h, m, a, A, u, w |
sys_info |
z, Z |
sys_time |
Z, z, c, x, X, D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w, H, I, M, S, r, R, T, p |
tai |
Z, z, c, x, X, D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w, H, I, M, S, r, R, T, p |
utc_time |
Z, z, c, x, X, D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w, H, I, M, S, r, R, T, p |
weekday |
a, A, u, w |
weekday_indexed |
a, A, u, w |
weekday_last |
a, A, u, w |
year |
Y, y, C |
year_month |
Y, y, B, g, G, h, C, b, m |
year_month_day |
D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w |
year_month_day_last |
D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w |
year_month_weekday |
D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w |
year_month_weekday_last |
D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w |
zoned_time |
z, Z, c, x, X, D, F, Y, C, y, b, B, h, m, d, e, a, A, u, w, H, I, M, S, r, R, T, p, g, G, U, V, W |
1The implementation is currently consistent with strftime in that although O
(letter O) and e
are accepted, they're ignored. That is, "%Od"
is interpreted as "%d"
.
get_leap_second_info
Returns a leap_second_info
for the specified time. This provides info about whether the supplied time occurs during a leap second insertion. It also provides the number of leap seconds that have been added between January 1, 1970 and the specified time. A leap second insertion occurs when the International Earth Rotation and Reference Systems Service (IERS) declares that a leap second will be added (resulting in a 61 second minute) to account for the difference between atomic time and time tracked by measuring the rotation of the earth, which is irregular, and is gradually slowing.
Syntax
template<class Duration>
leap_second_info
get_leap_second_info(const utc_time<Duration>& ut); // C++20
Parameters
ut
The source utc_time
to get the leap_second_info
for.
Return value
Returns a leap_second_info
whose member is_leap_second
is true
if ut
is during a positive leap second insertion; otherwise, false
. The elapsed
member holds the sum of leap seconds between the epoch date 1970-01-01
and ut
. If is_leap_second
is true
, the leap second referred to by ut
is included in the elapsed
sum.
get_tzdb
Gets the first entry in the program-wide time zone database list.
Syntax
const tzdb& get_tzdb(); // C++20
Return value
Returns a reference to the first tzdb
object as if by a call to get_tzdb_list().front()
. It throws a runtime_error
exception if it's the first reference to the time zone database and the time zone database can't be initialized.
Remarks
If it hasn't been initialized yet, get_tzdb
initializes the program-wide time zone database on first access. Upon initialization, the database is a tzdb_list
that holds a single initialized tzdb
object.
get_tzdb_list
Gets the program-wide singleton time zone database.
Syntax
tzdb_list& get_tzdb_list(); // C++20
Return value
Returns a reference to the program-wide tzdb_list
object. It throws a runtime_error
exception if it can't return a reference to a valid tzdb_list
object.
Remarks
If it hasn't been initialized yet, get_tzdb_list
initializes the program-wide time zone database on first access. Upon initialization, the database is a tzdb_list
that holds a single initialized tzdb
object. The get_tzdb_list
function is thread-safe.
is_am
Predicate for whether the specified hour is in the ante-meridiem (AM) part of the day.
Syntax
constexpr bool is_am(const hours& h) noexcept; // C++20
Parameters
h
The source hours
representation in 24-hour time notation.
Return value
Returns true
if 0h <= h && h <= 11h
, otherwise false
.
is_pm
Predicate for whether the specified hour is in the post-meridiem (PM) part of the day.
Syntax
constexpr bool is_pm(const hours& h) noexcept; // C++20
Parameters
h
The source hours
representation in 24-hour time notation.
Return value
Returns true
if 12h <= h && h <= 23h
, otherwise false
.
locate_zone
Gets a time zone object specified by time zone name.
Syntax
const time_zone* locate_zone(string_view tz_name); // C++20
Parameters
tz_name
The name of the time zone to return.
Return value
Returns a pointer to a time_zone
as if by a call to get_tzdb().locate_zone(tz_name)
. It throws a runtime_error
exception if it can't find the specified time zone, or if it's the first reference to the time zone database and the time zone database can't be initialized.
Remarks
If it hasn't been initialized yet, locate_zone
initializes the program-wide time zone database on first access. Upon initialization, the database is a tzdb_list
that holds a single initialized tzdb
object.
make12
Returns the specified hour in 12-hour time notation.
Syntax
constexpr hours make12(const hours& h) noexcept; // C++20
Parameters
h
The source hours
representation in 24-hour time notation.
Return value
Returns the 12-hour equivalent of h
in the range [1h, 12h]
. The return value is unspecified if h
isn't in the range [0h, 23h]
.
make24
Returns the specified hour in 24-hour time notation.
Syntax
constexpr hours make24(const hours& h, bool is_pm) noexcept; // C++20
Parameters
h
The source hours
representation in 12-hour time notation.
is_pm
The source hours
representation is PM (if true
) or AM (if false
).
Return value
If is_pm
is false
, make24
returns the 24-hour equivalent of h
in the range [0h, 11h]
, assuming h
represents an AM hour. Otherwise, it returns the 24-hour equivalent of h
in the range [12h, 23h]
, assuming h
represents a PM hour. The return value is unspecified if h
isn't in the range [1h, 12h]
.
reload_tzdb
Reloads the time zone database if updated information is available.
Syntax
const tzdb& reload_tzdb();
Return value
After it makes a time zone database update, if any, reload_tzdb
returns a reference to the first tzdb
object as if by a call to get_tzdb_list().front()
. It throws a runtime_error
exception if it can't return a reference to a valid tzdb
object.
Remarks
The local time zone database is the one supplied when the program first accesses the database, such as by a call to current_zone
. While the program is running, the implementation may update the time zone database. The update doesn't affect the program in any way unless the program calls the reload_tzdb
function. The potentially updated time zone database is called the remote time zone database.
The reload_tzdb
function checks the version of both the local time zone database and the remote time zone database. If the versions of the local and remote databases are the same, it makes no changes. Otherwise, the remote database is pushed to the front of the tzdb_list
accessed by get_tzdb_list
. An update doesn't invalidate any pointers, references, or iterators. The reload_tzdb
function is thread-safe for calls to get_tzdb_list().front()
and get_tzdb_list().erase_after()
.
remote_version
Gets a string that contains the latest remote database version.
Syntax
string remote_version();
Return value
Returns a string
that contains the latest remote database version.
round(duration)
Rounds the specified duration
to the nearest representable duration
in the target type.
Syntax
template<class ToDuration, class Rep, class Period>
constexpr ToDuration
round(const duration<Rep, Period>& d); // C++17
Parameters
ToDuration
The target duration
type. Constrained as a specialization of duration
where treat_as_floating_point_v<typename ToDuration::rep>
is false
.
Rep
The type of the internal representation of the source duration
d
.
Period
A std::ratio
type representing the ratio of one second to the source Rep
type (that is, seconds per Rep
).
d
The source duration
object.
Return value
Returns the nearest duration
representable in ToDuration
to the parameter d
. Ties go to the even value, that is, the value t
where t % 2 == 0
.
Remarks
round
doesn't participate in overload resolution unless the ToDuration
type is an instance of a duration
, and ToDuration
has an integral representation.
round(time_point)
Returns the nearest time point representable in the target duration
to the specified time point.
template<class ToDuration, class Clock, class Duration>
constexpr time_point<Clock, ToDuration>
round(const time_point<Clock, Duration>& tp);
Parameters
ToDuration
The target duration
type. Constrained as a specialization of duration
where treat_as_floating_point_v<typename ToDuration::rep>
is false
.
Clock
The common clock type of the result and the source parameter tp
.
Duration
The duration
type of tp
.
tp
The source time_point
object.
Return value
Returns the nearest time point representable using ToDuration
to tp
. Ties go to the even value, that is, the value t
where t % 2 == 0
. Effectively, time_point<Clock, ToDuration>(round<ToDuration>(tp.time_since_epoch()));
.
Remarks
round
doesn't participate in overload resolution unless the ToDuration
type is an instance of a duration
.
time_point_cast
Casts a time_point
object to a time_point
that has a different duration
type.
Syntax
template <class ToDuration, class Clock, class Duration>
time_point<Clock, ToDuration>
time_point_cast(const time_point<Clock, Duration>& tp); // C++11
Parameters
ToDuration
The target duration
type. Constrained as a specialization of duration
.
Clock
The common clock type of the result and the source parameter tp
.
Duration
The duration
type of tp
.
tp
The time_point
object to cast to one that has the ToDuration
type.
Return value
Returns a time_point
object that has a ToDuration
type. Effectively, time_point<Clock, ToDuration>(duration_cast<ToDuration>(t.time_since_epoch()));
.
Remarks
Unless ToDuration
is a specialization of duration
, this function doesn't participate in overload resolution.
See also
<chrono>
chrono
literals
chrono
operators
duration
class
time_point
class
time_zone
class