timex v3.1.5 Timex.Duration
This module provides a friendly API for working with Erlang
timestamps, i.e. {megasecs, secs, microsecs}
. In addition,
it provides an easy way to wrap the measurement of function
execution time (via measure
).
Summary
Functions
Returns the absolute value of the provided Duration
Add one Duration to another
This function determines the difference in time between two timestamps
(represented by Duration structs). If the second timestamp is omitted,
Duration.now
will be used as the reference timestamp. If the first
timestamp argument occurs before the second, the resulting measurement will
be a negative value
An alias for Duration.diff/3
Return time interval since the first day of year 0 to Epoch
Convers a clock tuple, i.e. {hour,minute,second,microsecond}
to a Duration
Helpful for if you want to convert a duration to a clock and vice vera
Converts an integer value representing days to a Duration
Converts an Erlang timestamp to a Duration
Converts an integer value representing hours to a Duration
Converts an integer value representing microseconds to a Duration
Converts an integer value representing milliseconds to a Duration
Converts an integer value representing minutes to a Duration
Converts an integer value representing seconds to a Duration
Converts a Time to a Duration
Converts an integer value representing weeks to a Duration
Invert a Duration, i.e. a positive duration becomes a negative one, and vice versa
Evaluates fun() and measures the elapsed time
Evaluates apply(fun, args)
, and measures execution time
Evaluates apply(module, fun, args)
, and measures execution time
Time interval since Epoch
Parses a duration string (in ISO-8601 format) into a Duration struct
Parses a duration string into a Duration struct, using the provided parser module
Same as parse/1, but returns the Duration unwrapped, and raises on error
Same as parse/2, but returns the Duration unwrapped, and raises on error
Scale a Duration by some coefficient value, i.e. a scale of 2 is twice is long
Subtract one Duration from another
Converts a Duration to a clock tuple, i.e. {hour,minute,second,microsecond}
Helpful for if you want to convert a duration to a clock and vice versa
Converts a Duration to its value in days
Converts a Duration to an Erlang timestamp
Converts a Duration to its value in hours
Converts a Duration to its value in microseconds
Converts a Duration to its value in milliseconds
Converts a Duration to its value in minutes
Converts a Duration to its value in seconds
Converts a Duration to a string, using the ISO standard for formatting durations
Converts a Duration to a Time, if the duration fits within a 24-hour clock, if it does not, an error will be returned
Same as to_time/1, but returns the Time directly, and raises on error
Converts a Duration to its value in weeks
Return a timestamp representing a time lapse of length 0
Types
measurement_units :: :microseconds | :milliseconds | :seconds | :minutes | :hours
Functions
Returns the absolute value of the provided Duration.
Add one Duration to another.
This function determines the difference in time between two timestamps
(represented by Duration structs). If the second timestamp is omitted,
Duration.now
will be used as the reference timestamp. If the first
timestamp argument occurs before the second, the resulting measurement will
be a negative value.
The type argument is an atom indicating the units the measurement should be returned in. If no type argument is provided, a Duration will be returned.
Valid measurement units for this function are:
:microseconds, :milliseconds, :seconds, :minutes, :hours, or :weeks
Examples
iex> alias Timex.Duration
...> d = Duration.from_erl({1457, 136000, 785000})
...> Duration.diff(d, Duration.zero, :days)
16865
Return time interval since the first day of year 0 to Epoch.
Convers a clock tuple, i.e. {hour,minute,second,microsecond}
to a Duration
Helpful for if you want to convert a duration to a clock and vice vera
Converts an integer value representing days to a Duration
Converts an Erlang timestamp to a Duration
Converts an integer value representing hours to a Duration
Converts an integer value representing microseconds to a Duration
Converts an integer value representing milliseconds to a Duration
Converts an integer value representing minutes to a Duration
Converts an integer value representing seconds to a Duration
Converts a Time to a Duration
Converts an integer value representing weeks to a Duration
Invert a Duration, i.e. a positive duration becomes a negative one, and vice versa
Evaluates fun() and measures the elapsed time.
Returns {Duration.t, result}
.
Example
iex> {_timestamp, result} = Duration.measure(fn -> 2 * 2 end)
...> result == 4
true
Evaluates apply(fun, args)
, and measures execution time.
Returns {Duration.t, result}
.
Example
iex> {_timestamp, result} = Duration.measure(fn x, y -> x * y end, [2, 4])
...> result == 8
true
Evaluates apply(module, fun, args)
, and measures execution time.
Returns {Duration.t, result}
.
Example
iex> {_timestamp, result} = Duration.measure(Enum, :map, [[1,2], &(&1*2)])
...> result == [2, 4]
true
Time interval since Epoch.
The argument is an atom indicating the type of time units to return (see convert/2 for supported values).
When the argument is omitted, the return value’s format is { megasecs, seconds, microsecs }.
Parses a duration string (in ISO-8601 format) into a Duration struct.
Parses a duration string into a Duration struct, using the provided parser module.
Same as parse/1, but returns the Duration unwrapped, and raises on error
Same as parse/2, but returns the Duration unwrapped, and raises on error
Scale a Duration by some coefficient value, i.e. a scale of 2 is twice is long.
Subtract one Duration from another.
Converts a Duration to a clock tuple, i.e. {hour,minute,second,microsecond}
Helpful for if you want to convert a duration to a clock and vice versa
Converts a Duration to its value in days
Example
iex> Duration.to_days(Duration.from_hours(6))
0.25
iex> Duration.to_days(Duration.from_hours(25), truncate: true)
1
to_days(integer | float, :microseconds) :: float
to_days(integer | float, :milliseconds) :: float
to_days(integer | float, :seconds) :: float
to_days(integer | float, :minutes) :: float
to_days(integer | float, :hours) :: float
to_days(integer | float, :days) :: float
to_days(integer | float, :weeks) :: float
Converts a Duration to an Erlang timestamp
Converts a Duration to its value in hours
Example
iex> Duration.to_hours(Duration.from_minutes(105))
1.75
iex> Duration.to_hours(Duration.from_minutes(105), truncate: true)
1
to_hours(integer | float, :microseconds) :: float
to_hours(integer | float, :milliseconds) :: float
to_hours(integer | float, :seconds) :: float
to_hours(integer | float, :minutes) :: float
to_hours(integer | float, :hours) :: float
to_hours(integer | float, :days) :: float
to_hours(integer | float, :weeks) :: float
Converts a Duration to its value in microseconds
Example
iex> Duration.to_microseconds(Duration.from_milliseconds(10.5))
10_500
to_microseconds(Timex.Duration.t, to_options) :: integer
to_microseconds(integer | float, :microseconds) :: float
to_microseconds(integer | float, :milliseconds) :: float
to_microseconds(integer | float, :seconds) :: float
to_microseconds(integer | float, :minutes) :: float
to_microseconds(integer | float, :hours) :: float
to_microseconds(integer | float, :days) :: float
to_microseconds(integer | float, :weeks) :: float
Converts a Duration to its value in milliseconds
Example
iex> Duration.to_milliseconds(Duration.from_seconds(1))
1000.0
iex> Duration.to_milliseconds(Duration.from_seconds(1.543))
1543.0
iex> Duration.to_milliseconds(Duration.from_seconds(1.543), truncate: true)
1543
to_milliseconds(Timex.Duration.t, to_options) :: float | integer
to_milliseconds(integer | float, :microseconds) :: float
to_milliseconds(integer | float, :milliseconds) :: float
to_milliseconds(integer | float, :seconds) :: float
to_milliseconds(integer | float, :minutes) :: float
to_milliseconds(integer | float, :hours) :: float
to_milliseconds(integer | float, :days) :: float
to_milliseconds(integer | float, :weeks) :: float
Converts a Duration to its value in minutes
Example
iex> Duration.to_minutes(Duration.from_seconds(90))
1.5
iex> Duration.to_minutes(Duration.from_seconds(65), truncate: true)
1
to_minutes(Timex.Duration.t, to_options) :: float | integer
to_minutes(integer | float, :microseconds) :: float
to_minutes(integer | float, :milliseconds) :: float
to_minutes(integer | float, :seconds) :: float
to_minutes(integer | float, :minutes) :: float
to_minutes(integer | float, :hours) :: float
to_minutes(integer | float, :days) :: float
to_minutes(integer | float, :weeks) :: float
Converts a Duration to its value in seconds
Example
iex> Duration.to_seconds(Duration.from_milliseconds(1500))
1.5
iex> Duration.to_seconds(Duration.from_milliseconds(1500), truncate: true)
1
to_seconds(Timex.Duration.t, to_options) :: float | integer
to_seconds(integer | float, :microseconds) :: float
to_seconds(integer | float, :milliseconds) :: float
to_seconds(integer | float, :seconds) :: float
to_seconds(integer | float, :minutes) :: float
to_seconds(integer | float, :hours) :: float
to_seconds(integer | float, :days) :: float
to_seconds(integer | float, :weeks) :: float
Converts a Duration to a string, using the ISO standard for formatting durations.
Converts a Duration to a Time, if the duration fits within a 24-hour clock, if it does not, an error will be returned.
Same as to_time/1, but returns the Time directly, and raises on error
Converts a Duration to its value in weeks
Example
iex> Duration.to_weeks(Duration.from_days(14))
2.0
iex> Duration.to_weeks(Duration.from_days(13), truncate: true)
1
to_weeks(integer | float, :microseconds) :: float
to_weeks(integer | float, :milliseconds) :: float
to_weeks(integer | float, :seconds) :: float
to_weeks(integer | float, :minutes) :: float
to_weeks(integer | float, :hours) :: float
to_weeks(integer | float, :days) :: float
to_weeks(integer | float, :weeks) :: float
Return a timestamp representing a time lapse of length 0.
iex> Timex.Duration.zero |> Timex.Duration.to_seconds
0.0
Can be useful for operations on collections of durations. For instance,
Enum.reduce(durations, Duration.zero, Duration.add(&1, &2))
Can also be used to represent the timestamp of the start of the UNIX epoch, as all Erlang timestamps are relative to this point.