Packages
timex
0.17.0
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/date/date_format.ex
defmodule Timex.DateFormat do
@moduledoc """
Date formatting and parsing.
This module provides an interface and core implementation for converting date
values into strings (formatting) or the other way around (parsing) according
to the specified template.
Multiple template formats are supported, each one provided by a separate
module. One can also implement custom formatters for use with this module.
"""
alias Timex.DateTime
alias Timex.Format.DateTime.Formatter
alias Timex.Format.DateTime.Formatters.Strftime
alias Timex.Parse.DateTime.Parser
alias Timex.Parse.DateTime.Tokenizers.Strftime, as: StrftimeTokenizer
@doc """
Converts date values to strings according to the given template (aka format string).
"""
@spec format(%DateTime{}, String.t) :: {:ok, String.t} | {:error, String.t}
defdelegate format(%DateTime{} = date, format_string), to: Formatter
@doc """
Same as `format/2`, but takes a custom formatter.
"""
@spec format(%DateTime{}, String.t, atom) :: {:ok, String.t} | {:error, String.t}
def format(%DateTime{} = date, format_string, :default),
do: Formatter.format(date, format_string)
def format(%DateTime{} = date, format_string, :strftime),
do: Formatter.format(date, format_string, Strftime)
defdelegate format(%DateTime{} = date, format_string, formatter), to: Formatter
@doc """
Raising version of `format/2`. Returns a string with formatted date or raises a `FormatError`.
"""
@spec format!(%DateTime{}, String.t) :: String.t | no_return
defdelegate format!(%DateTime{} = date, format_string), to: Formatter
@doc """
Raising version of `format/3`. Returns a string with formatted date or raises a `FormatError`.
"""
@spec format!(%DateTime{}, String.t, atom) :: String.t | no_return
def format!(%DateTime{} = date, format_string, :default),
do: Formatter.format!(date, format_string)
def format!(%DateTime{} = date, format_string, :strftime),
do: Formatter.format!(date, format_string, Strftime)
defdelegate format!(%DateTime{} = date, format_string, formatter), to: Formatter
@doc """
Parses the date encoded in `string` according to the template.
"""
@spec parse(String.t, String.t) :: {:ok, %DateTime{}} | {:error, term}
defdelegate parse(date_string, format_string), to: Parser
@doc """
Parses the date encoded in `string` according to the template by using the
provided formatter.
"""
@spec parse(String.t, String.t, atom) :: {:ok, %DateTime{}} | {:error, term}
def parse(date_string, format_string, :default), do: Parser.parse(date_string, format_string)
def parse(date_string, format_string, :strftime), do: Parser.parse(date_string, format_string, StrftimeTokenizer)
defdelegate parse(date_string, format_string, parser), to: Parser
@doc """
Raising version of `parse/2`. Returns a DateTime struct, or raises a `ParseError`.
"""
@spec parse!(String.t, String.t) :: %DateTime{} | no_return
defdelegate parse!(date_string, format_string), to: Parser
@doc """
Raising version of `parse/3`. Returns a DateTime struct, or raises a `ParseError`.
"""
@spec parse!(String.t, String.t, atom) :: %DateTime{} | no_return
def parse!(date_string, format_string, :default), do: Parser.parse!(date_string, format_string)
def parse!(date_string, format_string, :strftime), do: Parser.parse!(date_string, format_string, StrftimeTokenizer)
defdelegate parse!(date_string, format_string, parser), to: Parser
@doc """
Verifies the validity of the given format string. The default formatter is assumed.
Returns `:ok` if the format string is clean, `{ :error, <reason> }` otherwise.
"""
@spec validate(String.t) :: :ok | {:error, term}
defdelegate validate(format_string), to: Formatter
@doc """
Verifies the validity of the given format string according to the provided
formatter.
Returns `:ok` if the format string is clean, `{ :error, <reason> }` otherwise.
"""
@spec validate(String.t, atom) :: :ok | {:error, term}
def validate(format_string, :default), do: Formatter.validate(format_string)
def validate(format_string, :strftime), do: Formatter.validate(format_string, StrftimeTokenizer)
defdelegate validate(format_string, formatter), to: Formatter
end