Duration
The following functions operate on the built-in type Duration
for durations.
Duration::betweenInstants : Instant -> Instant -> Duration
The function Duration::betweenInstants
returns a Duration
which is the absolute amount of time from the first to the second argument.
The result is a negative duration if the first argument comes after the second.
Examples
val a = Duration::betweenInstants #2018-02-01# #2018-03-01#
// = #PT672H#
val b = Duration::betweenInstants #2018-02-01# #2018-01-01#
// = #-PT744H#
Duration::betweenTimes : Time -> Time -> Duration
The function Duration::betweenTimes
returns a Duration
which is the absolute amount of time from the first to the second argument.
The result is a negative duration if the first argument comes after the second.
Examples
val a = Duration::betweenTimes (Time::from 13 0 0 0) (Time::from 17 30 15 355)
// = #PT4H30M15.355S#
val b = Duration::betweenTimes (Time::from 17 30 15 355) (Time::from 13 0 0 0)
// = #-PT4H30M15.355S#
Duration::add : Duration -> Duration -> Duration
The function Duration::add
adds two durations together.
The function is partial and fails if the components of the result cannot be represented; see Duration::fromComponents.
Examples
val a = Duration::add #PT1H2M3S# #PT60S#
// = #PT1H3M3S#
Duration::negate : Duration -> Duration -> Duration
The function Duration::negated
negates a Duration
.
The function is partial and fails if the components of the result cannot be represented; see Duration::fromComponents.
Examples
val a = Duration::negated #P1DT2S#
// = #-PT24H2S#
Duration::components : Duration -> Duration::Components
The function Duration::components
returns a value of the type Duration::Components
which represents the given duration as the number of whole seconds (positive or negative) plus a number of milliseconds. Note that the millisecond adjustment is always in the range [0 .. 999]
, also for negative durations. A duration of -1.5
seconds is thus represented as -2
seconds plus an adjustment of 500
milliseconds.
Examples
val a = Duration::components #P1DT2H62M3.333S#
// = Duration::Components {
// milliseconds = 333,
// seconds = 97323
// }
val a = Duration::components #-PT1.5S#
// = Duration::Components {
// milliseconds = 500,
// seconds = -2
// }
Duration::fromComponents : Duration::Components -> Duration
The function Duration::fromComponents
constructs a Duration
from a number of seconds and a milliseconds adjustment. There are no range constraints on the components, specifically the millisecond adjustment is allowed to be outside the range [0 .. 999]
. The components are normalized internally to bring the millisecond adjustment into the normal range.
The function is partial and fails if the normalization of the millisecond adjustment causes the number of seconds to overflow.
Examples
val a = Duration::fromComponents Duration::Components { milliseconds = 500, seconds = -2 }
// = #-PT1.5S#
// Tip: Construction of negative durations using negative millisecond adjustments is sometimes more intuitive.
val a = Duration::fromComponents Duration::Components { milliseconds = -500, seconds = -1 }
// = #-PT1.5S#
Duration::from : Int -> Int -> Duration
The function Duration::from
is a convenience wrapper of Duration::fromComponents which takes the individual components as positional arguments.
The order of arguments is
seconds
millisecond adjustment
The function is partial and fails if the components of the result cannot be represented; see Duration::fromComponents.
val a = Duration::from 3625 456
// = #PT1H25.456S#
Duration::fromMinutes : Int -> Duration
The function Duration::fromMinutes
creates a Duration
from an Int
representing whole minutes.
The function is partial and fails if the components of the result cannot be represented; see Duration::fromComponents.
Examples
val a = Duration::fromMinutes 62
// = #PT1H2M#
Duration::fromHours : Int -> Duration
The function Duration::fromHours
creates a Duration
from an Int
reoresenting whole hours.
The function is partial and fails if the components of the result cannot be represented; see Duration::fromComponents.
Examples
val a = Duration::fromHours 4
// = #PT4H#
Duration::fromDays : Float -> Duration
The function Duration::fromDays
creates a Duration
from an Int
representing whole days.
The function is partial and fails if the components of the result cannot be represented; see Duration::fromComponents.
Examples
val a = Duration::fromDays 2
// = #PT48H#