Defined in header <chrono>

    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.


[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)
assigns the contents
(public member function)
returns the count of ticks
(public member function)
returns the special duration value zero
(public static member function)
returns the special duration value min
(public static member function)
returns the special duration value max
(public static member function)
implements unary + and unary -
(public member function)
increments or decrements the tick count
(public member function)
implements compound assignment between two durations
(public member function)

[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)
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] 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";


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