Namespaces
Variants
Views
Actions

std::chrono::duration

From cppreference.com
Defined in header <chrono>
template<

    class Rep,
    class Period = std::ratio<1>

> class duration;
(since C++11)

Class template std::chrono::duration represents a time interval.

It consists of a count of ticks and a tick period, where the tick period is a compile-time rational constant representing the number of seconds from one tick to the next.

Contents

[edit] Member types

Member type Definition
rep Rep, an arithmetic type representing the number of ticks
period Period, a std::ratio representing the tick period (i.e. the number of seconds per tick)

[edit] Member functions

constructs new duration
(public member function) [edit]
assigns the contents
(public member function) [edit]
returns the count of ticks
(public member function) [edit]
[static]
returns the special duration value zero
(public static member function) [edit]
[static]
returns the special duration value min
(public static member function) [edit]
[static]
returns the special duration value max
(public static member function) [edit]
implements unary + and unary -
(public member function) [edit]
increments or decrements the tick count
(public member function) [edit]
implements compound assignment between two durations
(public member function) [edit]

[edit] Non-member types

Type Definition
std::chrono::nanoseconds duration type with Period std::nano
std::chrono::microseconds duration type with Period std::micro
std::chrono::milliseconds duration type with Period std::milli
std::chrono::seconds duration type with Period std::ratio<1>
std::chrono::minutes duration type with Period std::ratio<60>
std::chrono::hours duration type with Period std::ratio<3600>

[edit] Non-member functions

specializes the std::common_type trait
(class template specialization) [edit]
implements arithmetic operations with durations as arguments
(function template)
compares two durations
(function template)
converts a duration to another, with a different tick interval
(function template) [edit]

[edit] Helper classes

indicates that a duration is convertible to duration with different tick period
(class template)
constructs zero, min, and max values of a tick count of given type
(class template)

[edit] Example

This example shows how to define several custom duration types and convert between types:

#include <iostream>
#include <chrono>
 
int main()
{
    typedef std::chrono::duration<int, std::ratio<1, 100000000>> shakes;
    typedef std::chrono::duration<int, std::centi> jiffies;
    typedef std::chrono::duration<float, std::ratio<12096,10000>> microfortnights;
    typedef std::chrono::duration<float, std::ratio<3155,1000>> nanocenturies;
 
    std::chrono::seconds sec(1);
 
    std::cout << "1 second is:\n";
 
    std::cout << std::chrono::duration_cast<shakes>(sec).count()
              << " shakes\n";
    std::cout << std::chrono::duration_cast<jiffies>(sec).count()
              << " jiffies\n";
    std::cout << std::chrono::duration_cast<microfortnights>(sec).count()
              << " microfortnights\n";
    std::cout << std::chrono::duration_cast<nanocenturies>(sec).count()
              << " nanocenturies\n";
}

Output:

1 second is:
100000000 shakes
100 jiffies
0.82672 microfortnights
0.316957 nanocenturies