Elixir Date and Time conversion into US standards
Today I learned how to manually convert a Date and Time into US standards: mm/dd/YYYY
and hh:mm am|pm
. Here's my code snippet:
defmodule Utils.Converter do
def to_usa_date(%Date{day: day, month: month, year: year}) do
"~2..0B/~2..0B/~4..0B"
|> :io_lib.format([month, day, year])
|> to_string()
end
def to_usa_time(%Time{} = time) do
period = (time.hour < 12 && "am") || "pm"
hour = time.hour |> rem(12)
"~2..0B:~2..0B ~2..0s"
|> :io_lib.format([hour, time.minute, period])
|> to_string()
end
end
This way I can convert dates like ~D[2020-05-29]
into 05/29/2020"
and times like ~T[11:00:07.001]
into 11:00 am"
and ~T[23:00:07.001]
into 11:00 pm"
.
Here's the erlang :io_lib documentation
Tweet