Packages
timex
3.0.4
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/protocol.ex
defprotocol Timex.Protocol do
@moduledoc """
This protocol defines the API for functions which take a `Date`,
`NaiveDateTime`, or `DateTime` as input.
"""
@doc """
Convert a date/time value to a Julian calendar date number
"""
def to_julian(datetime)
@doc """
Convert a date/time value to gregorian seconds (seconds since start of year zero)
"""
def to_gregorian_seconds(datetime)
@doc """
Convert a date/time value to gregorian microseconds (microseconds since the start of year zero)
"""
def to_gregorian_microseconds(datetime)
@doc """
Convert a date/time value to seconds since the UNIX Epoch
"""
def to_unix(datetime)
@doc """
Convert a date/time value to a Date
"""
def to_date(datetime)
@doc """
Convert a date/time value to a DateTime.
An optional timezone can be provided, UTC will be assumed if one is not provided.
"""
def to_datetime(datetime, timezone \\ :utc)
@doc """
Convert a date/time value to a NaiveDateTime
"""
def to_naive_datetime(datetime)
@doc """
Convert a date/time value to it's Erlang tuple variant
i.e. Date becomes `{y,m,d}`, DateTime/NaiveDateTime become
`{{y,m,d},{h,mm,s}}`
"""
def to_erl(datetime)
@doc """
Get the century a date/time value is in
"""
def century(datetime)
@doc """
Return a boolean indicating whether the date/time value is in a leap year
"""
def is_leap?(datetime)
@doc """
Shift a date/time value using a list of shift unit/value pairs
"""
def shift(datetime, options)
@doc """
Set fields on a date/time value using a list of unit/value pairs
"""
def set(datetime, options)
@doc """
Get a new version of the date/time value representing the beginning of the day
"""
def beginning_of_day(datetime)
@doc """
Get a new version of the date/time value representing the end of the day
"""
def end_of_day(datetime)
@doc """
Get a new version of the date/time value representing the beginning of it's week,
providing a weekday name (as an atom) for the day which starts the week, i.e. `:mon`.
"""
def beginning_of_week(datetime, weekstart)
@doc """
Get a new version of the date/time value representing the ending of it's week,
providing a weekday name (as an atom) for the day which starts the week, i.e. `:mon`.
"""
def end_of_week(datetime, weekstart)
@doc """
Get a new version of the date/time value representing the beginning of it's year
"""
def beginning_of_year(datetime)
@doc """
Get a new version of the date/time value representing the ending of it's year
"""
def end_of_year(datetime)
@doc """
Get a new version of the date/time value representing the beginning of it's quarter
"""
def beginning_of_quarter(datetime)
@doc """
Get a new version of the date/time value representing the ending of it's quarter
"""
def end_of_quarter(datetime)
@doc """
Get a new version of the date/time value representing the beginning of it's month
"""
def beginning_of_month(datetime)
@doc """
Get a new version of the date/time value representing the ending of it's month
"""
def end_of_month(datetime)
@doc """
Get the quarter for the given date/time value
"""
def quarter(datetime)
@doc """
Get the number of days in the month for the given date/time value
"""
def days_in_month(datetime)
@doc """
Get the week number of the given date/time value, starting at 1
"""
def week_of_month(datetime)
@doc """
Get the ordinal weekday number of the given date/time value
"""
def weekday(datetime)
@doc """
Get the ordinal day number of the given date/time value
"""
def day(datetime)
@doc """
Determine if the provided date/time value is valid.
"""
def is_valid?(datetime)
@doc """
Return a pair {year, week number} (as defined by ISO 8601) that the given date/time value falls on.
"""
def iso_week(datetime)
@doc """
Shifts the given date/time value to the ISO day given
"""
def from_iso_day(datetime, day)
end
defimpl Timex.Protocol, for: Any do
def to_julian(_datetime), do: {:error, :invalid_date}
def to_gregorian_seconds(_datetime), do: {:error, :invalid_date}
def to_gregorian_microseconds(_datetime), do: {:error, :invalid_date}
def to_unix(_datetime), do: {:error, :invalid_date}
def to_date(_datetime), do: {:error, :invalid_date}
def to_datetime(_datetime, _timezone), do: {:error, :invalid_date}
def to_naive_datetime(_datetime), do: {:error, :invalid_date}
def to_erl(_datetime), do: {:error, :invalid_date}
def century(_datetime), do: {:error, :invalid_date}
def is_leap?(_datetime), do: {:error, :invalid_date}
def shift(_datetime, _options), do: {:error, :invalid_date}
def set(_datetime, _options), do: {:error, :invalid_date}
def beginning_of_day(_datetime), do: {:error, :invalid_date}
def end_of_day(_datetime), do: {:error, :invalid_date}
def beginning_of_week(_datetime, _weekstart), do: {:error, :invalid_date}
def end_of_week(_datetime, _weekstart), do: {:error, :invalid_date}
def beginning_of_year(_datetime), do: {:error, :invalid_date}
def end_of_year(_datetime), do: {:error, :invalid_date}
def beginning_of_quarter(_datetime), do: {:error, :invalid_date}
def end_of_quarter(_datetime), do: {:error, :invalid_date}
def beginning_of_month(_datetime), do: {:error, :invalid_date}
def end_of_month(_datetime), do: {:error, :invalid_date}
def quarter(_datetime), do: {:error, :invalid_date}
def days_in_month(_datetime), do: {:error, :invalid_date}
def week_of_month(_datetime), do: {:error, :invalid_date}
def weekday(_datetime), do: {:error, :invalid_date}
def day(_datetime), do: {:error, :invalid_date}
def is_valid?(_datetime), do: {:error, :invalid_date}
def iso_week(_datetime), do: {:error, :invalid_date}
def from_iso_day(_datetime, _day), do: {:error, :invalid_date}
end