--- title: "duration" --- {{< callout type="info">}} Header: `chrono.h` Since: `TBC` Similar to: [std::chrono::duration](https://en.cppreference.com/w/cpp/chrono/duration.html) Similar to: [std::chrono::duration_values](https://en.cppreference.com/w/cpp/chrono/duration_values.html) {{< /callout >}} Templates representing a time interval. ## duration_values ```cpp template struct duration_values ``` ```cpp ETL_NODISCARD static ETL_CONSTEXPR TRep zero() ETL_NOEXCEPT ``` **Return** `TRep(0)` --- ```cpp ETL_NODISCARD static ETL_CONSTEXPR14 TRep min() ETL_NOEXCEPT ``` **Return** `etl::numeric_limits::min()` --- ```cpp ETL_NODISCARD static ETL_CONSTEXPR14 TRep max() ETL_NOEXCEPT ``` **Returns** `etl::numeric_limits::max()` ## duration ```cpp template > class duration ``` ```cpp using rep = TRep using period = typename TPeriod::type; ``` ### Construction ```cpp ETL_CONSTEXPR duration() ETL_NOEXCEPT ``` **Description** Default constructor. --- ```cpp ETL_CONSTEXPR14 duration(const etl::chrono::duration& other) ETL_NOEXCEPT ``` --- ```cpp template ETL_CONSTEXPR14 explicit duration(const TRep2& value) ETL_NOEXCEPT ``` --- ```cpp template ETL_CONSTEXPR14 duration(const etl::chrono::duration& other) ETL_NOEXCEPT ``` **Description** Construct from another duration type. Enabled if `etl::ratio_divide::den == 1` ### Tests ```cpp ETL_NODISCARD ETL_CONSTEXPR14 int compare(const time_point& other) const ETL_NOEXCEPT ``` **Description** Compare day with another. if `time_point < other`, returns `-1` else if `time_point > other`, returns `1` else returns `0` ### Assignment ```cpp ETL_CONSTEXPR14 etl::chrono::duration operator =(const etl::chrono::duration& other) ETL_NOEXCEPT ``` --- ```cpp template ETL_CONSTEXPR14 etl::chrono::duration operator =(const etl::chrono::duration& other) ETL_NOEXCEPT ``` ### Convertion ```cpp ETL_CONSTEXPR14 TRep count() const ETL_NOEXCEPT ``` **Return** The duration count as a numeric. --- ```cpp ETL_CONSTEXPR14 etl::common_type_t operator +() const ETL_NOEXCEPT ``` **Description** Implements unary plus. --- ```cpp ETL_CONSTEXPR14 etl::common_type_t operator -() const ETL_NOEXCEPT ``` **Description** Implements unary minus. --- ```cpp ETL_NODISCARD ETL_CONSTEXPR14 etl::chrono::duration absolute() const ETL_NOEXCEPT ``` **Return** The absolute value of the duration. --- ### Constants ```cpp ETL_NODISCARD static ETL_CONSTEXPR14 etl::chrono::duration zero() ETL_NOEXCEPT ``` **Return** The duration zero value. --- ```cpp ETL_NODISCARD static ETL_CONSTEXPR14 etl::chrono::duration min() ETL_NOEXCEPT ``` **Return** The minimum duration value. --- ```cpp ETL_NODISCARD static ETL_CONSTEXPR14 etl::chrono::duration max() ETL_NOEXCEPT --- **Return** The maximum duration value. ## Increment/decrement ```cpp ETL_CONSTEXPR14 duration& operator ++() ETL_NOEXCEPT ``` **Description** Pre-increments the duration count. --- ```cpp ETL_CONSTEXPR14 duration operator ++(int) ETL_NOEXCEPT ``` **Description** Post-increments the duration count. --- ```cpp ETL_CONSTEXPR14 duration& operator --() ETL_NOEXCEPT ``` **Description** Pre-decrements the duration count. --- ```cpp ETL_CONSTEXPR14 duration operator --(int) ETL_NOEXCEPT ``` **Description** Post-decrements the duration count. ### Mathematical operators ```cpp ETL_CONSTEXPR14 duration& operator +=(const duration& d) ETL_NOEXCEPT ``` **Description** Adds duration `d` to this duration. --- ```cpp ETL_CONSTEXPR14 duration& operator -=(const duration& d) ETL_NOEXCEPT ``` **Description** Subtracts duration `d` to this duration. --- ```cpp ETL_CONSTEXPR14 duration& operator *=(const TRep& r) ETL_NOEXCEPT ``` **Description** Multiplies this duration by `r`. --- ```cpp ETL_CONSTEXPR14 duration& operator /=(const TRep& r) ETL_NOEXCEPT ``` **Description** Divides this duration by `r`. --- ```cpp ETL_CONSTEXPR14 duration& operator %=(const TRep& r) ETL_NOEXCEPT ``` **Description** Sets this duration to the modulus of `r`. --- ```cpp ETL_CONSTEXPR14 duration& operator %=(const duration& d) ETL_NOEXCEPT ``` **Description** Sets this duration to the modulus of duration `d`. ### Comparison ```cpp template ETL_CONSTEXPR14 int compare(const duration& other) const ETL_NOEXCEPT ``` **Description** Compare duration with another. If `duration < other`, returns `-1` else if `duration > other`, returns `1` else returns `0` ### Non-member mathematical operators ```cpp template ETL_CONSTEXPR14 etl::common_type_t, etl::chrono::duration> operator +(const etl::chrono::duration& lhs, const etl::chrono::duration& rhs) ETL_NOEXCEPT ``` **Description** Operator `+` --- ```cpp template ETL_CONSTEXPR14 etl::common_type_t, etl::chrono::duration >::type operator -(const etl::chrono::duration& lhs, const etl::chrono::duration& rhs) ETL_NOEXCEPT ``` **Description** Operator `-` --- ```cpp template ETL_CONSTEXPR14 etl::chrono::duration, TPeriod1>> operator *(const etl::chrono::duration& lhs, const TRep2& rhs) ETL_NOEXCEPT ``` **Description** Operator `*` Enabled if `TRep2` is not a specialization of `etl::chrono::duration`. --- ```cpp template ETL_CONSTEXPR14 etl::chrono::duration, TPeriod2> operator *(const TRep1& lhs, const etl::chrono::duration& rhs) ETL_NOEXCEPT ``` **Description** Operator `*` --- ```cpp template ETL_CONSTEXPR14 etl::common_type_t, TPeriod1> operator /(const etl::chrono::duration& lhs, const TRep2& rhs) ETL_NOEXCEPT ``` **Description** Operator `/` Enabled if `TRep2` is not a specialization of `etl::chrono::duration`. --- ```cpp template ETL_CONSTEXPR14 etl::common_type_t operator /(const etl::chrono::duration& lhs, const etl::chrono::duration& rhs) ETL_NOEXCEPT ``` **Description** Operator `/` --- ```cpp template ETL_CONSTEXPR14 etl::chrono::duration, TPeriod1> operator %(const etl::chrono::duration& lhs, const TRep2& rhs) ETL_NOEXCEPT ``` **Description** Operator `%` ``` ```cpp template ETL_CONSTEXPR14 etl::common_type_t, etl::chrono::duration> operator %(const etl::chrono::duration& lhs, const etl::chrono::duration& rhs) ETL_NOEXCEPT ``` **Description** Operator `%` ### Non-member comparison operators ```cpp template ETL_CONSTEXPR14 bool operator ==(const etl::chrono::duration& lhs, const etl::chrono::duration& rhs) ETL_NOEXCEPT ``` **Description** Checks for equality. --- ```cpp template ETL_CONSTEXPR14 bool operator !=(const etl::chrono::duration& lhs, const etl::chrono::duration& rhs) ETL_NOEXCEPT ``` **Description** Checks for inequality. --- ```cpp template ETL_CONSTEXPR14 bool operator <(const etl::chrono::duration& lhs, const etl::chrono::duration& rhs) ETL_NOEXCEPT ``` **Description** Checks for less-than. --- ```cpp template ETL_CONSTEXPR14 bool operator <=(const etl::chrono::duration& lhs, const etl::chrono::duration& rhs) ETL_NOEXCEPT ``` **Description** Checks for less-than-or-equal. --- ```cpp template ETL_CONSTEXPR14 bool operator >(const etl::chrono::duration& lhs, const etl::chrono::duration& rhs) ETL_NOEXCEPT ``` **Description** Checks for greater-than. --- ```cpp template ETL_CONSTEXPR14 bool operator >=(const etl::chrono::duration& lhs, const etl::chrono::duration& rhs) ETL_NOEXCEPT ``` **Description** Checks for greater-than-or-equal. --- ```cpp template [[nodiscard]] constexpr auto operator <=>(const etl::chrono::duration& lhs, const etl::chrono::duration& rhs) noexcept ``` **Description** Spaceship operator. C++20 ## common_type ```cpp template struct common_type, etl::chrono::duration> ``` **Description** `etl::common_type` specialisation for `etl::duration`. ## Hash ```cpp template struct hash> ``` ## Pre-defined duration types ```cpp etl::chrono::years etl::chrono::months etl::chrono::weeks etl::chrono::days etl::chrono::hours etl::chrono::minutes etl::chrono::seconds etl::chrono::milliseconds etl::chrono::microseconds etl::chrono::nanoseconds ``` ## duration_cast ```cpp template ETL_CONSTEXPR14 TToDuration duration_cast(const etl::chrono::duration& d) ETL_NOEXCEPT ``` **Description** Converts from one duration type to another.