Membrane.Time (Membrane Core v0.7.0) View Source
Module containing functions needed to perform handling of time.
Membrane always internally uses nanosecond as a time unit. This is how all time units should represented in the code unless there's a good reason to act differently.
Please note that Erlang VM may internally use different units and that may differ from platform to platform. Still, unless you need to perform calculations that do not touch hardware clock, you should use Membrane units for consistency.
Link to this section Summary
Functions
Returns time in days, represented as a rational number.
Returns time in hours, represented as a rational number.
Returns time in microseconds, represented as a rational number.
Returns time in milliseconds, represented as a rational number.
Returns time in minutes, represented as a rational number.
Returns time in nanoseconds, represented as a rational number.
Returns time in seconds, represented as a rational number.
Returns one day in Membrane.Time
units.
Returns given amount of days in Membrane.Time
units.
Converts DateTime
to Membrane.Time
units.
Converts iso8601 string to Membrane.Time
units.
If value
is invalid, throws match error.
Converts NTP timestamp (time since 0h on 1st Jan 1900) into Unix timestamp
(time since 1st Jan 1970) represented in Membrane.Time
units.
Returns one hour in Membrane.Time
units.
Returns given amount of hours in Membrane.Time
units.
Checks whether a value is Membrane.Time.t
.
Returns one microsecond in Membrane.Time
units.
Returns given amount of microseconds in Membrane.Time
units.
Returns one millisecond in Membrane.Time
units.
Returns given amount of milliseconds in Membrane.Time
units.
Returns one minute in Membrane.Time
units.
Returns given amount of minutes in Membrane.Time
units.
Returns current monotonic time based on System.monotonic_time/0
in Membrane.Time
units.
Returns one nanosecond in Membrane.Time
units.
Returns given amount of nanoseconds in Membrane.Time
units.
Returns one VM native unit in Membrane.Time
units.
Returns given amount of VM native units in Membrane.Time
units.
Returns current POSIX time of operating system based on System.os_time/0
in Membrane.Time
units.
Returns duration as a string with unit. Chosen unit is the biggest possible that doesn't involve precission loss.
Returns current time in pretty format (currently iso8601), as string
Uses system_time/0
under the hood.
Returns one second in Membrane.Time
units.
Returns given amount of seconds in Membrane.Time
units.
Returns current time of Erlang VM based on System.system_time/0
in Membrane.Time
units.
Returns quoted code producing given amount time. Chosen unit is the biggest possible that doesn't involve precission loss.
Returns string representation of result of to_code/1
.
Returns time as a DateTime
struct. TimeZone is set to UTC.
Returns time in days. Rounded using Kernel.round/1
.
Returns time in hours. Rounded using Kernel.round/1
.
Returns time as a iso8601 string.
Returns time in microseconds. Rounded using Kernel.round/1
.
Returns time in milliseconds. Rounded using Kernel.round/1
.
Returns time in minutes. Rounded using Kernel.round/1
.
Returns time in nanoseconds. Rounded using Kernel.round/1
.
Returns time in VM native units. Rounded using Kernel.round/1.
Converts the timestamp into NTP timestamp. May introduce small rounding errors.
Returns time in seconds. Rounded using Kernel.round/1
.
Returns current Erlang VM system time based on System.system_time/0
in Membrane.Time
units.
Link to this section Types
Specs
non_neg_t() :: non_neg_integer()
Specs
t() :: integer()
Link to this section Functions
Specs
Returns time in days, represented as a rational number.
Specs
Returns time in hours, represented as a rational number.
Specs
Returns time in microseconds, represented as a rational number.
Specs
Returns time in milliseconds, represented as a rational number.
Specs
Returns time in minutes, represented as a rational number.
Specs
Returns time in nanoseconds, represented as a rational number.
Specs
Returns time in seconds, represented as a rational number.
Specs
day() :: t()
Returns one day in Membrane.Time
units.
Specs
Specs
Returns given amount of days in Membrane.Time
units.
Specs
from_datetime(DateTime.t()) :: t()
Converts DateTime
to Membrane.Time
units.
Specs
Converts iso8601 string to Membrane.Time
units.
If value
is invalid, throws match error.
Specs
from_ntp_timestamp(ntp_time :: <<_::64>>) :: t()
Converts NTP timestamp (time since 0h on 1st Jan 1900) into Unix timestamp
(time since 1st Jan 1970) represented in Membrane.Time
units.
NTP timestamp uses fixed point representation with the integer part in the first 32 bits and the fractional part in the last 32 bits.
Specs
hour() :: t()
Returns one hour in Membrane.Time
units.
Specs
Specs
Returns given amount of hours in Membrane.Time
units.
Checks whether a value is Membrane.Time.t
.
Specs
microsecond() :: t()
Returns one microsecond in Membrane.Time
units.
Specs
Specs
Returns given amount of microseconds in Membrane.Time
units.
Specs
millisecond() :: t()
Returns one millisecond in Membrane.Time
units.
Specs
Specs
Returns given amount of milliseconds in Membrane.Time
units.
Specs
minute() :: t()
Returns one minute in Membrane.Time
units.
Specs
Specs
Returns given amount of minutes in Membrane.Time
units.
Specs
monotonic_time() :: t()
Returns current monotonic time based on System.monotonic_time/0
in Membrane.Time
units.
Specs
nanosecond() :: t()
Returns one nanosecond in Membrane.Time
units.
Specs
Specs
Returns given amount of nanoseconds in Membrane.Time
units.
Specs
native_unit() :: t()
Returns one VM native unit in Membrane.Time
units.
Specs
Specs
Returns given amount of VM native units in Membrane.Time
units.
Specs
os_time() :: t()
Returns current POSIX time of operating system based on System.os_time/0
in Membrane.Time
units.
This time is not monotonic.
Specs
Returns duration as a string with unit. Chosen unit is the biggest possible that doesn't involve precission loss.
Examples
iex> import Membrane.Time
iex> 10 |> milliseconds() |> pretty_duration()
"10 ms"
iex> 60_000_000 |> microseconds() |> pretty_duration()
"1 min"
iex> 2 |> nanoseconds() |> pretty_duration()
"2 ns"
Specs
pretty_now() :: String.t()
Returns current time in pretty format (currently iso8601), as string
Uses system_time/0
under the hood.
Specs
second() :: t()
Returns one second in Membrane.Time
units.
Specs
Specs
Returns given amount of seconds in Membrane.Time
units.
Specs
system_time() :: t()
Returns current time of Erlang VM based on System.system_time/0
in Membrane.Time
units.
Specs
Returns quoted code producing given amount time. Chosen unit is the biggest possible that doesn't involve precission loss.
Examples
iex> import Membrane.Time
iex> 10 |> milliseconds() |> to_code() |> Macro.to_string()
quote do 10 |> Membrane.Time.milliseconds() end |> Macro.to_string()
iex> 60_000_000 |> microseconds() |> to_code() |> Macro.to_string()
quote do Membrane.Time.minute() end |> Macro.to_string()
iex> 2 |> nanoseconds() |> to_code() |> Macro.to_string()
quote do 2 |> Membrane.Time.nanoseconds() end |> Macro.to_string()
Specs
Returns string representation of result of to_code/1
.
Specs
to_datetime(t()) :: DateTime.t()
Returns time as a DateTime
struct. TimeZone is set to UTC.
Specs
Returns time in days. Rounded using Kernel.round/1
.
Specs
Returns time in hours. Rounded using Kernel.round/1
.
Specs
Returns time as a iso8601 string.
Specs
Returns time in microseconds. Rounded using Kernel.round/1
.
Specs
Returns time in milliseconds. Rounded using Kernel.round/1
.
Specs
Returns time in minutes. Rounded using Kernel.round/1
.
Specs
Returns time in nanoseconds. Rounded using Kernel.round/1
.
Specs
Returns time in VM native units. Rounded using Kernel.round/1.
Specs
to_ntp_timestamp(timestamp :: t()) :: <<_::64>>
Converts the timestamp into NTP timestamp. May introduce small rounding errors.
Specs
Returns time in seconds. Rounded using Kernel.round/1
.
Specs
vm_time() :: t()
Returns current Erlang VM system time based on System.system_time/0
in Membrane.Time
units.
It is the VM view of the os_time/0
. They may not match in case of time warps.
It is not monotonic.