Packages
quantum
2.2.1
3.5.3
3.5.2
retired
3.5.1
retired
3.5.0
3.4.0
3.3.0
3.2.0
3.1.0
3.0.2
3.0.1
3.0.0
3.0.0-rc.3
3.0.0-rc.2
3.0.0-rc.1
2.4.0
2.3.4
2.3.3
2.3.2
2.3.1
retired
2.3.0
retired
2.2.7
2.2.6
2.2.5
retired
2.2.4
retired
2.2.3
retired
2.2.2
retired
2.2.1
retired
2.2.0
retired
2.1.3
retired
2.1.2
retired
2.1.1
retired
2.1.0
retired
2.1.0-beta.1
retired
2.0.4
retired
2.0.3
retired
2.0.2
retired
2.0.1
retired
2.0.0
retired
2.0.0-beta.2
retired
2.0.0-beta.1
retired
1.9.3
retired
1.9.2
retired
1.9.1
retired
1.9.0
retired
1.8.1
retired
1.8.0
retired
1.7.1
retired
1.7.0
retired
1.6.1
retired
1.6.0
retired
1.5.0
retired
1.4.0
retired
1.3.2
retired
1.3.1
retired
1.3.0
retired
1.2.4
retired
1.2.3
retired
1.2.2
retired
1.2.1
retired
1.2.0
retired
1.1.0
retired
1.0.4
retired
1.0.3
retired
1.0.2
retired
1.0.1
retired
1.0.0
retired
Cron-like job scheduler for Elixir.
Retired package: Release invalid - Problem with Daylight Saving Time
Current section
Files
Jump to
Current section
Files
lib/quantum/date_library.ex
defmodule Quantum.DateLibrary do
@moduledoc """
This Behaviour offers Date Library Independant integration of helper
functions.
**This behaviour is considered internal. Breaking Changes can occur on every
release.**
Make sure your implementation passes `Quantum.DateLibraryTest`. Otherwise
unexpected behaviour can occur.
"""
@date_library Application.get_env(:quantum, :date_library, Quantum.DateLibrary.Timex)
@doc """
Convert `NaiveDateTime` in UTC to `NaiveDateTime` in given tz.
"""
@callback utc_to_tz!(NaiveDateTime.t(), String.t()) :: NaiveDateTime.t() | no_return
@doc """
Convert `NaiveDateTime` in given tz to `NaiveDateTime` in UTC.
"""
@callback tz_to_utc!(NaiveDateTime.t(), String.t()) :: NaiveDateTime.t() | no_return
@doc """
Gives back the required application dependency to start, if any is needed.
"""
@callback dependency_application :: atom | nil
@doc """
Convert Date to Utc
"""
@spec to_utc!(NaiveDateTime.t(), :utc | binary) :: NaiveDateTime.t() | no_return
def to_utc!(date, :utc), do: date
def to_utc!(date, tz) when is_binary(tz), do: @date_library.tz_to_utc!(date, tz)
@doc """
Convert Date to TZ
"""
@spec to_utc!(NaiveDateTime.t(), :utc | binary) :: NaiveDateTime.t() | no_return
def to_tz!(date, :utc), do: date
def to_tz!(date, tz) when is_binary(tz), do: @date_library.utc_to_tz!(date, tz)
end