class Rep,
class Period = std::ratio<1>
Class template std::chrono::duration
represents a time interval.
It consists of a count of ticks of type Rep
and a tick period, where the tick period is a compile-time rational fraction representing the time in seconds from one tick to the next.
The only data stored in a duration
is a tick count of type Rep
. If Rep
is floating point, then the duration
can represent fractions of ticks. Period
is included as part of the duration's type, and is only used when converting between different durations.
rep
Rep
, an arithmetic type, or a class emulating an arithmetic type, representing the number of ticks period
Period
(until C++17)typename Period::type(since C++17), a std::ratio representing the tick period (i.e. the number of second's fractions per tick) [edit] Member functions [edit] Non-member functions [edit] Helper types
A type /* intXX */ used in the table below means a signed integer type of at least XX bits.
Type Definitionstd::chrono::nanoseconds
std::chrono::duration</* int64 */, std::nano> std::chrono::microseconds
std::chrono::duration</* int55 */, std::micro> std::chrono::milliseconds
std::chrono::duration</* int45 */, std::milli> std::chrono::seconds
std::chrono::duration</* int35 */> std::chrono::minutes
std::chrono::duration</* int29 */, std::ratio<60>> std::chrono::hours
std::chrono::duration</* int23 */, std::ratio<3600>> std::chrono::days
(since C++20) std::chrono::duration</* int25 */, std::ratio<86400>> std::chrono::weeks
(since C++20) std::chrono::duration</* int22 */, std::ratio<604800>> std::chrono::months
(since C++20) std::chrono::duration</* int20 */, std::ratio<2629746>> std::chrono::years
(since C++20) std::chrono::duration</* int17 */, std::ratio<31556952>>
Note: each of the predefined duration types up to hours
covers a range of at least ±292 years.
Each of the predefined duration types days
, weeks
, months
and years
covers a range of at least ±40000 years. years
is equal to 365.2425 days
(the average length of a Gregorian year). months
is equal to 30.436875 days
(exactly 1/12 of years
).
constexpr bool enable_nonlocking_formatter_optimization<chrono::duration<Rep, Period>>
This specialization of std::enable_nonlocking_formatter_optimization enables efficient implementation of std::print and std::println for printing a chrono::duration
object when the template parameter Rep
enables it.
Note: the literal suffixes d
and y
do not refer to days
and years
but to day and year, respectively.
The actual time interval (in seconds) that is held by a duration object d is roughly equal to d.count() * D::period::num / D::period::den, where D
is of type chrono::duration<>
and d is an object of such type.
This example shows how to define several custom duration types and convert between types:
#include <chrono> #include <iostream> using namespace std::chrono_literals; template<typename T1, typename T2> using mul = std::ratio_multiply<T1, T2>; int main() { using microfortnights = std::chrono::duration<float, mul<mul<std::ratio<2>, std::chrono::weeks::period>, std::micro>>; using nanocenturies = std::chrono::duration<float, mul<mul<std::hecto, std::chrono::years::period>, std::nano>>; using fps_24 = std::chrono::duration<double, std::ratio<1, 24>>; std::cout << "1 second is:\n"; // integer scale conversion with no precision loss: no cast std::cout << std::chrono::milliseconds(1s).count() << " milliseconds\n" << std::chrono::microseconds(1s).count() << " microseconds\n" << std::chrono::nanoseconds(1s).count() << " nanoseconds\n"; // integer scale conversion with precision loss: requires a cast std::cout << std::chrono::duration_cast<std::chrono::minutes>(1s).count() << " minutes\n"; // alternative to duration_cast: std::cout << 1s / 1min << " minutes\n"; // floating-point scale conversion: no cast std::cout << microfortnights(1s).count() << " microfortnights\n" << nanocenturies(1s).count() << " nanocenturies\n" << fps_24(1s).count() << " frames at 24fps\n"; }
Output:
1 second is: 1000 milliseconds 1000000 microseconds 1000000000 nanoseconds 0 minutes 0 minutes 0.82672 microfortnights 0.316887 nanocenturies 24 frames at 24fps
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4