没有外部依赖关系的Exlir / Ecto中的DateTime

时间:2017-02-06 05:10:10

标签: elixir phoenix-framework ecto

我的格式为DateTime

{{2017, 2, 2}, {14, 43, 50, 0}}

我想将其转换为“2017年2月2日”或“2017年2月2日”或“2017年2月2日”,而不使用Timex或任何其他依赖项,除非({}}需要,Ecto.DateTime。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

使用Ecto.DateTime

{{2017, 2, 2}, {14, 43, 50, 0}}
|> Ecto.DateTime.cast!
|> Ecto.DateTime.to_date
|> Ecto.Date.to_string

# => "2017-02-02"

使用Elixir.Date

{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)

For String Months

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