Current section

Files

Jump to
timex lib comparable datetime.ex
Raw

lib/comparable/datetime.ex

defimpl Timex.Comparable, for: DateTime do
alias Timex.AmbiguousDateTime
alias Timex.Comparable.Utils
alias Timex.Comparable.Diff
def compare(a, :epoch, granularity), do: compare(a, Timex.epoch(), granularity)
def compare(a, :zero, granularity), do: compare(a, Timex.zero(), granularity)
def compare(_, :distant_past, _granularity), do: +1
def compare(_, :distant_future, _granularity), do: -1
def compare(a, a, _granularity), do: 0
def compare(_, %AmbiguousDateTime{} = b, _granularity),
do: {:error, {:ambiguous_comparison, b}}
def compare(a, b, granularity),
do: Utils.to_compare_result(diff(a, b, granularity))
def diff(_, %AmbiguousDateTime{} = b, _granularity),
do: {:error, {:ambiguous_comparison, b}}
defdelegate diff(a, b, granularity), to: Diff
end