我的格式为DateTime
:
{{2017, 2, 2}, {14, 43, 50, 0}}
我想将其转换为“2017年2月2日”或“2017年2月2日”或“2017年2月2日”,而不使用Timex
或任何其他依赖项,除非({}}需要,Ecto.DateTime
。我怎么能这样做?
答案 0 :(得分:0)
{{2017, 2, 2}, {14, 43, 50, 0}}
|> Ecto.DateTime.cast!
|> Ecto.DateTime.to_date
|> Ecto.Date.to_string
# => "2017-02-02"
{date, _time} = {{2017, 2, 2}, {14, 43, 50, 0}}
date
|> Date.from_erl!
|> Date.to_string
# => "2017-02-02"
进一步修改:
"2017-02-02"
|> String.split("-")
|> Enum.reverse
|> Enum.join("/")
# => "02/02/2017"
对于一个简单的案例,这些可能有用 - 但我认真地建议使用Timex来处理更复杂的问题。 See this answer for reference 的
答案 1 :(得分:0)
defmodule MyDate do
@months ~w(January February March April May June July August September October November December)
def to_string({{y, m, d}, _time} = datetime) do
"#{d} #{Enum.at(@months, m - 1)} #{y}"
end
end
用法:
MyDate.to_string({{2017, 2, 2}, {14, 43, 50, 0}})
# => "2 February 2017"
对于一个简单的案例,这可能有用 - 但我认真地建议使用Timex来处理更复杂的问题。 See this answer for reference 的