如何在Elixir中解析DateTime?

如何从元组{DD,MM,YY}中创建(Ecto.)DateTime,或者从Elixir中的字符串中解析它?我应该使用Erlang的DateTime吗?

我用Google搜索但没有找到任何内容,文档中没有关于此事的任何内容,只有关于DateTime的内容 – 例如,如何获取当前日期和时间.

请注意,我不想使用Timex等第三方库.

最佳答案
要获取当前日期和/或时间,您可以使用其中一个

Ecto.Date.utc
Ecto.Time.utc
Ecto.DateTime.utc
DateTime.utc_now

至于将{DD,MM,YY}元组转换为Ecto.Date,您将无法使用ecto提供的函数执行此操作.但是,您可以使用{YYYY,MM,DD}元组转换为Ecto.Date.

Ecto.Date.from_erl({2016, 12, 4})
#Ecto.Date<2016-12-04>

Date.from_erl({2016, 12, 4})
{:ok, ~D[2016-12-04]}

Ecto.Time.from_erl({13, 55, 10})
#Ecto.Time<12:10:08>

Ecto.Time.from_erl({13, 55, 10})
{:ok, ~T[13:55:10]}

Ecto.DateTime.from_erl({{2016, 12, 4}, {13, 55, 10}})
#Ecto.DateTime<2016-12-04 13:55:10>

Ecto.Date.from_erl({2016, 12, 4}) |> Ecto.DateTime.from_date()
#Ecto.Date<2016-12-04>

您只需要确保您的数据符合这些函数所期望的正确顺序.

至于从字符串中解析这些,您要么需要引入另一个库,要么自己编写解析器.

转载注明原文:如何在Elixir中解析DateTime? - 代码日志