Packages
timex
2.0.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/format/time/formatter.ex
defmodule Timex.Format.Time.Formatter do
@moduledoc """
This module defines the behaviour for custom Time formatters
"""
use Behaviour
use Timex
import Timex.Macros
alias Timex.Format.Time.Formatters.Default
alias Timex.Format.Time.Formatters.Humanized
defmacro __using__(_) do
quote do
alias Timex.Time
@behaviour Timex.Format.Time.Formatter
end
end
defcallback format(timestamp :: Types.timestamp) :: String.t | {:error, term}
@doc """
Formats a Time tuple/Erlang timestamp, as a string, using the provided
formatter. If a formatter is not provided, the formatter used is
`Timex.Format.Time.Formatters.Default`. As a handy shortcut, you can reference
the other built-in formatter (Humanized) via the :humanized atom as shown below.
# Examples
iex> #{__MODULE__}.format({1435, 180354, 590264})
"P45Y6M5DT21H12M34.590264S"
iex> #{__MODULE__}.format({1435, 180354, 590264}, :humanized)
"45 years, 6 months, 5 days, 21 hours, 12 minutes, 34 seconds, 590.264 milliseconds"
"""
@spec format(Types.timestamp, atom) :: String.t | {:error, term}
def format(timestamp, formatter \\ Default)
def format({mega,s,micro} = timestamp, formatter) when is_timestamp(mega,s,micro) and is_atom(formatter) do
case formatter do
:humanized -> Humanized.format(timestamp)
_ -> formatter.format(timestamp)
end
end
def format(_, _), do: {:error, :invalid_timestamp}
end