使用 to_erl 将 Ecto.DateTime 转换为 Erlang 日期时间元组

Ser*_*pia 1 datetime elixir ecto

我有一个 Ecto.DateTime 我试图从中提取信息。

这工作正常:

{{y, m, d}, _} = Ecto.DateTime.to_erl(date)
"#{m}/#{d}/#{y}"
Run Code Online (Sandbox Code Playgroud)

我现在正在尝试获取小时/分钟/秒值:

{{y, m, d}, {h,m,s}} = Ecto.DateTime.to_erl(date)
"#{m}/#{d}/#{y}"
Run Code Online (Sandbox Code Playgroud)

但我收到这个错误

右侧值不匹配:{{2017, 5, 5}, {12, 0, 0}}

Dog*_*ert 5

您在模式中重复使用变量名称m,这意味着这仅在月份和分钟值相同时才有效。您需要使用不同的名称,例如

{{y, m, d}, {h, min, s}} = Ecto.DateTime.to_erl(date)
Run Code Online (Sandbox Code Playgroud)

或者

{{y, mon, d}, {h, m, s}} = Ecto.DateTime.to_erl(date)
Run Code Online (Sandbox Code Playgroud)
iex(1)> {a, a} = {1, 2}
** (MatchError) no match of right hand side value: {1, 2}

iex(1)> {a, a} = {1, 1}
{1, 1}
Run Code Online (Sandbox Code Playgroud)