Packages
timex
2.1.6
3.7.13
3.7.12
3.7.11
3.7.9
3.7.8
3.7.7
3.7.6
3.7.5
3.7.3
3.7.2
3.7.1
3.7.0
3.6.4
3.6.3
3.6.2
retired
3.6.1
3.6.0
3.5.0
3.4.2
3.4.1
3.3.0
3.2.2
3.2.1
3.2.0
3.1.25
retired
3.1.24
3.1.23
3.1.22
3.1.21
3.1.20
3.1.19
3.1.18
3.1.17
3.1.16
3.1.15
3.1.13
3.1.12
3.1.11
3.1.10
3.1.9
3.1.8
3.1.7
3.1.6
3.1.5
3.1.4
3.1.3
3.1.2
3.1.1
3.1.0
3.0.8
3.0.7
3.0.6
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
3.0.0
2.2.1
2.1.6
2.1.5
2.1.4
2.1.3
2.1.2
2.1.1
2.1.0
2.0.0
1.0.2
1.0.1
1.0.0
1.0.0-rc4
1.0.0-rc3
1.0.0-rc2
1.0.0-rc1
1.0.0-pre
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.2
0.18.1
0.18.0
0.17.0
0.16.2
0.16.1
0.16.0
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.5
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.12.9
0.12.8
0.12.7
0.12.6
0.12.5
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
0.11.0
0.10.2
0.10.1
0.10.0
0.9.0
0.8.0
0.7.1
0.6.0
0.5.0
0.4.8
0.4.7
0.4.6
Timex is a rich, comprehensive Date/Time library for Elixir projects, with full timezone support via the :tzdata package. If you need to manipulate dates, times, datetimes, timestamps, etc., then Timex is for you!
Current section
Files
Jump to
Current section
Files
lib/comparable/ambiguous_datetime.ex
defimpl Timex.Comparable, for: Timex.AmbiguousDateTime do
alias Timex.Comparable
alias Timex.Convertable
alias Timex.DateTime
alias Timex.AmbiguousDateTime
@doc """
See docs for `Timex.compare/3`
"""
def compare(_, :distant_future, _granularity), do: -1
def compare(_, :distant_past, _granularity), do: 1
def compare(%AmbiguousDateTime{:after => a}, %AmbiguousDateTime{:after => b}, granularity) do
Comparable.compare(a, b, granularity)
end
def compare(a, b, granularity) do
case Convertable.to_datetime(b) do
{:error, _} = err ->
err
%DateTime{} ->
{:error, {:ambiguous_comparison, a}}
%AmbiguousDateTime{} = adt ->
compare(a, adt, granularity)
end
end
def diff(%AmbiguousDateTime{:after => a}, %AmbiguousDateTime{:after => b}, granularity) do
Comparable.diff(a, b, granularity)
end
def diff(a, b, granularity) do
case Convertable.to_datetime(b) do
{:error, _} = err -> err
%DateTime{} ->
{:error, {:ambiguous_comparison, a}}
%AmbiguousDateTime{} = adt ->
diff(a, adt, granularity)
end
end
end