Current section

Files

Jump to
grpc_fresha lib grpc time_utils.ex
Raw

lib/grpc/time_utils.ex

defmodule GRPC.TimeUtils do
@moduledoc false
@doc """
Returns relative time in milliseconds.
## Examples
iex> from = DateTime.utc_now
iex> us = DateTime.to_unix(from, :microsecond)
iex> datetime = DateTime.from_unix!(us + 5005, :microsecond)
iex> Float.round(GRPC.TimeUtils.to_relative(datetime, from), 3)
5.005
"""
def to_relative(datetime, from \\ DateTime.utc_now()) do
ms = datetime_to_milliseconds(datetime)
now_ms = datetime_to_milliseconds(from)
ms - now_ms
end
defp datetime_to_milliseconds(datetime) do
DateTime.to_unix(datetime, :second) * 1000 + elem(datetime.microsecond, 0) * 0.001
end
end