| Home | Libraries | People | FAQ | More

## Class template time_duration

boost::date_time::time_duration — Represents some amount of elapsed time measure to a given resolution.

## Synopsis

    // In header: <boost/date_time/time_duration.hpp>

    template<typename T, typename rep_type>
    class time_duration :
      private boost::less_than_comparable< T, boost::equality_comparable< T > >
    {
    public:
      // types
      typedef void                              _is_boost_date_time_duration;
      typedef T                                 duration_type;
      typedef rep_type                          traits_type;
      typedef rep_type::day_type                day_type;
      typedef rep_type::hour_type               hour_type;
      typedef rep_type::min_type                min_type;
      typedef rep_type::sec_type                sec_type;
      typedef rep_type::fractional_seconds_type fractional_seconds_type;
      typedef rep_type::tick_type               tick_type;
      typedef rep_type::impl_type               impl_type;

      // construct/copy/destruct
      time_duration();
      time_duration(hour_type, min_type, sec_type = 0,
                    fractional_seconds_type = 0);
      time_duration(const time_duration< T, rep_type > &);
      time_duration(special_values);
      explicit time_duration(impl_type);

      // public member functions
      BOOST_CXX14_CONSTEXPR hour_type hours() const;
      BOOST_CXX14_CONSTEXPR min_type minutes() const;
      BOOST_CXX14_CONSTEXPR sec_type seconds() const;
      BOOST_CXX14_CONSTEXPR sec_type total_seconds() const;
      BOOST_CXX14_CONSTEXPR tick_type total_milliseconds() const;
      BOOST_CXX14_CONSTEXPR tick_type total_nanoseconds() const;
      BOOST_CXX14_CONSTEXPR tick_type total_microseconds() const;
      BOOST_CXX14_CONSTEXPR fractional_seconds_type fractional_seconds() const;
      BOOST_CXX14_CONSTEXPR duration_type invert_sign() const;
      BOOST_CXX14_CONSTEXPR duration_type abs() const;
      BOOST_CONSTEXPR bool is_negative() const;
      BOOST_CONSTEXPR bool is_zero() const;
      BOOST_CONSTEXPR bool is_positive() const;
      BOOST_CONSTEXPR bool operator<(const time_duration &) const;
      BOOST_CONSTEXPR bool operator==(const time_duration &) const;
      BOOST_CONSTEXPR duration_type operator-() const;
      BOOST_CONSTEXPR duration_type operator-(const duration_type &) const;
      BOOST_CONSTEXPR duration_type operator+(const duration_type &) const;
      BOOST_CONSTEXPR duration_type operator/(int) const;
      BOOST_CXX14_CONSTEXPR duration_type operator-=(const duration_type &);
      BOOST_CXX14_CONSTEXPR duration_type operator+=(const duration_type &);
      BOOST_CXX14_CONSTEXPR duration_type operator/=(int);
      BOOST_CXX14_CONSTEXPR duration_type operator *(int) const;
      BOOST_CXX14_CONSTEXPR duration_type operator *=(int);
      BOOST_CXX14_CONSTEXPR tick_type ticks() const;
      BOOST_CXX14_CONSTEXPR bool is_special() const;
      BOOST_CXX14_CONSTEXPR bool is_pos_infinity() const;
      BOOST_CXX14_CONSTEXPR bool is_neg_infinity() const;
      BOOST_CXX14_CONSTEXPR bool is_not_a_date_time() const;
      BOOST_CONSTEXPR impl_type get_rep() const;

      // public static functions
      static BOOST_CXX14_CONSTEXPR duration_type unit();
      static BOOST_CXX14_CONSTEXPR tick_type ticks_per_second();
      static BOOST_CXX14_CONSTEXPR time_resolutions resolution();
      static BOOST_CXX14_CONSTEXPR unsigned short num_fractional_digits();
    };

## Description

This class represents a standard set of capabilities for all counted time durations. Time duration implementations should derive from this class passing their type as the first template parameter. This design allows the subclass duration types to provide custom construction policies or other custom features not provided here.

### Template Parameters

1.     typename T

   The subclass type

2.     typename rep_type

   The time resolution traits for this duration type.

### `time_duration` public construct/copy/destruct

1.     time_duration();

2.     time_duration(hour_type hours_in, min_type minutes_in,
                     sec_type seconds_in = 0,
                     fractional_seconds_type frac_sec_in = 0);

3.     time_duration(const time_duration< T, rep_type > & other);

   Construct from another `time_duration` (Copy constructor)

4.     time_duration(special_values sv);

   Construct from special_values.

5.     explicit time_duration(impl_type in);

### `time_duration` public member functions

1.     BOOST_CXX14_CONSTEXPR hour_type hours() const;

   Returns number of hours in the duration.

2.     BOOST_CXX14_CONSTEXPR min_type minutes() const;

   Returns normalized number of minutes.

3.     BOOST_CXX14_CONSTEXPR sec_type seconds() const;

   Returns normalized number of seconds (0..60)

4.     BOOST_CXX14_CONSTEXPR sec_type total_seconds() const;

   Returns total number of seconds truncating any fractional seconds.

5.     BOOST_CXX14_CONSTEXPR tick_type total_milliseconds() const;

   Returns total number of milliseconds truncating any fractional seconds.

6.     BOOST_CXX14_CONSTEXPR tick_type total_nanoseconds() const;

   Returns total number of nanoseconds truncating any sub millisecond values.

7.     BOOST_CXX14_CONSTEXPR tick_type total_microseconds() const;

   Returns total number of microseconds truncating any sub microsecond values.

8.     BOOST_CXX14_CONSTEXPR fractional_seconds_type fractional_seconds() const;

   Returns count of fractional seconds at given resolution.

9.     BOOST_CXX14_CONSTEXPR duration_type invert_sign() const;

10.     BOOST_CXX14_CONSTEXPR duration_type abs() const;

11.     BOOST_CONSTEXPR bool is_negative() const;

12.     BOOST_CONSTEXPR bool is_zero() const;

13.     BOOST_CONSTEXPR bool is_positive() const;

14.     BOOST_CONSTEXPR bool operator<(const time_duration & rhs) const;

15.     BOOST_CONSTEXPR bool operator==(const time_duration & rhs) const;

16.     BOOST_CONSTEXPR duration_type operator-() const;

    unary- Allows for `time_duration` td = -td1

17.     BOOST_CONSTEXPR duration_type operator-(const duration_type & d) const;

18.     BOOST_CONSTEXPR duration_type operator+(const duration_type & d) const;

19.     BOOST_CONSTEXPR duration_type operator/(int divisor) const;

20.     BOOST_CXX14_CONSTEXPR duration_type operator-=(const duration_type & d);

21.     BOOST_CXX14_CONSTEXPR duration_type operator+=(const duration_type & d);

22.     BOOST_CXX14_CONSTEXPR duration_type operator/=(int divisor);

    Division operations on a duration with an integer.

23.     BOOST_CXX14_CONSTEXPR duration_type operator *(int rhs) const;

    Multiplication operations an a duration with an integer.

24.     BOOST_CXX14_CONSTEXPR duration_type operator *=(int divisor);

25.     BOOST_CXX14_CONSTEXPR tick_type ticks() const;

26.     BOOST_CXX14_CONSTEXPR bool is_special() const;

    Is ticks_ a special value?

27.     BOOST_CXX14_CONSTEXPR bool is_pos_infinity() const;

    Is duration pos-infinity.

28.     BOOST_CXX14_CONSTEXPR bool is_neg_infinity() const;

    Is duration neg-infinity.

29.     BOOST_CXX14_CONSTEXPR bool is_not_a_date_time() const;

    Is duration not-a-date-time.

30.     BOOST_CONSTEXPR impl_type get_rep() const;

    Used for special_values output.

### `time_duration` public static functions

1.     static BOOST_CXX14_CONSTEXPR duration_type unit();

   Returns smallest representable duration.

2.     static BOOST_CXX14_CONSTEXPR tick_type ticks_per_second();

   Return the number of ticks in a second.

3.     static BOOST_CXX14_CONSTEXPR time_resolutions resolution();

   Provide the resolution of this duration type.

4.     static BOOST_CXX14_CONSTEXPR unsigned short num_fractional_digits();

   Returns number of possible digits in fractional seconds.