A Duration
refers to an elapsed time in seconds, milliseconds, hours etc.,
as opposed to a specific instant in time (which would generally be represented
by a Posix
value). It is stored as a number of seconds.
Duration
Duration.Seconds
seconds : Basics.Float -> Duration
Construct a Duration
from a given number of seconds.
inSeconds : Duration -> Basics.Float
Convert a Duration
to a value in seconds.
Duration.milliseconds 10 |> Duration.inSeconds
--> 0.01
milliseconds : Basics.Float -> Duration
Construct a Duration
from a given number of milliseconds.
Duration.milliseconds 5000
--> Duration.seconds 5
inMilliseconds : Duration -> Basics.Float
Convert a Duration
to a value in milliseconds.
Duration.seconds 0.5 |> Duration.inMilliseconds
--> 500
minutes : Basics.Float -> Duration
Construct a Duration
from a given number of minutes.
Duration.minutes 3
--> Duration.seconds 180
inMinutes : Duration -> Basics.Float
Convert a Duration
to a value in minutes.
Duration.seconds 90 |> Duration.inMinutes
--> 1.5
hours : Basics.Float -> Duration
Construct a Duration
from a given number of hours.
Duration.hours 1
--> Duration.seconds 3600
inHours : Duration -> Basics.Float
Convert a Duration
to a value in hours.
Duration.minutes 120 |> Duration.inHours
--> 2
days : Basics.Float -> Duration
Construct a Duration
from a given number of days. A day is defined as
exactly 24 hours or 86400 seconds. Therefore, it is only equal to the length of
a given calendar day if that calendar day does not include either a leap second
or any added/removed daylight savings hours.
Duration.days 1
--> Duration.hours 24
inDays : Duration -> Basics.Float
Convert a Duration
to a value in days.
Duration.hours 72 |> Duration.inDays
--> 3
weeks : Basics.Float -> Duration
Construct a Duration
from a given number of weeks.
Duration.weeks 1
--> Duration.days 7
inWeeks : Duration -> Basics.Float
Convert a Duration
to a value in weeks.
Duration.days 28 |> Duration.inWeeks
--> 4
julianYears : Basics.Float -> Duration
Construct a Duration
from a given number of Julian years.
A Julian year is defined as exactly 365.25 days, the average length of a year in
the historical Julian calendar. This is 10 minutes and 48 seconds longer than
a Gregorian year (365.2425 days), which is the average length of a year in the
modern Gregorian calendar, but the Julian year is a bit easier to remember and
reason about and has the virtue of being the 'year' value used in the definition
of a light year.
Duration.julianYears 1
--> Duration.days 365.25
inJulianYears : Duration -> Basics.Float
Convert a Duration
to a value in Julian years.
Duration.hours 10000 |> Duration.inJulianYears
--> 1.1407711613050422
Time.Posix
valuesfrom : Time.Posix -> Time.Posix -> Duration
Find the elapsed time from a start time to an end time. For example,
assuming that nineAM
and fivePM
are two Time.Posix
values on the same day:
Duration.from nineAM fivePM
--> Duration.hours 8
addTo
and subtractFrom
can be used to offset a Time.Posix
value by a given Duration
. However, note that Time.Posix
values are stored
as an integer number of milliseconds, so the offset amount will be rounded to
the nearest number of milliseconds.
addTo : Time.Posix -> Duration -> Time.Posix
Offset a Time.Posix
value forwards in time by a given Duration
:
-- Assuming that 'now' is a Time.Posix value obtained
-- from Time.now
threeHoursFromNow =
Duration.addTo now (Duration.hours 3)
subtractFrom : Time.Posix -> Duration -> Time.Posix
Offset a Time.Posix
value backwards in time by a given Duration
:
-- Assuming that 'now' is a Time.Posix value obtained
-- from Time.now
fiveMinutesAgo =
Duration.subtractFrom now (Duration.minutes 5)
Duration.subtractFrom time duration
is equivalent to Duration.addTo time
(Quantity.negate duration)
.
Shorthand for Duration.seconds 1
, Duration.hours 1
etc. Can be convenient to
use with Quantity.per
.
second : Duration
millisecond : Duration
minute : Duration
hour : Duration
day : Duration
week : Duration
julianYear : Duration