Elixir 将日期时间转换为字符串
Elixir converting datetime to string
我有一个原始 sql 查询,其中 return 是一个日期时间字段,我想 return json 包含这些结果。
如果我输入 return 值,我会收到投诉:
(Poison.EncodeError) unable to encode value: {{2017, 3, 21}, {0, 0, 0, 0}}
如果我尝试使用 Timex
将其转换为字符串:
Timex.format!(Ecto.DateTime.from_erl(datetime_field), "%Y-%m-%d %H:%M:%S", :strftime)
我得到:
** (FunctionClauseError) no function clause matching in Ecto.DateTime.from_erl/1
如果我跳过 from_erl
部分:
Timex.format!(datetime_field, "%Y-%m-%d %H:%M:%S", :strftime)
我得到:
** (Poison.EncodeError) unable to encode value: {:error, :invalid_date}
要获得标准 erlang
日期时间值需要从第二个元组中删除第四个值(微秒):
datetime = {{2017, 3, 21}, {0, 0, 0, 0}}
{{year, month, day}, {hours, minutes, seconds, _}} = datetime
datetime = {{year, month, day}, {hours, minutes, seconds}}
Poison.encode! Ecto.DateTime.from_erl(datetime)
#=> "\"2017-03-21T00:00:00\""
根据 Ecto 3.0 更新日志,Ecto.DateTime
不再存在。如果您没有可用的时区信息,您可以使用 NaiveDateTime.from_erl()
代替 Ecto.DateTime.from_erl()
如果您需要除基本 iso8601 或 to_string 之外的更多格式,您需要查看 https://hexdocs.pm/timex/Timex.html#format/2
我有一个原始 sql 查询,其中 return 是一个日期时间字段,我想 return json 包含这些结果。
如果我输入 return 值,我会收到投诉:
(Poison.EncodeError) unable to encode value: {{2017, 3, 21}, {0, 0, 0, 0}}
如果我尝试使用 Timex
将其转换为字符串:
Timex.format!(Ecto.DateTime.from_erl(datetime_field), "%Y-%m-%d %H:%M:%S", :strftime)
我得到:
** (FunctionClauseError) no function clause matching in Ecto.DateTime.from_erl/1
如果我跳过 from_erl
部分:
Timex.format!(datetime_field, "%Y-%m-%d %H:%M:%S", :strftime)
我得到:
** (Poison.EncodeError) unable to encode value: {:error, :invalid_date}
要获得标准 erlang
日期时间值需要从第二个元组中删除第四个值(微秒):
datetime = {{2017, 3, 21}, {0, 0, 0, 0}}
{{year, month, day}, {hours, minutes, seconds, _}} = datetime
datetime = {{year, month, day}, {hours, minutes, seconds}}
Poison.encode! Ecto.DateTime.from_erl(datetime)
#=> "\"2017-03-21T00:00:00\""
根据 Ecto 3.0 更新日志,Ecto.DateTime
不再存在。如果您没有可用的时区信息,您可以使用 NaiveDateTime.from_erl()
代替 Ecto.DateTime.from_erl()
如果您需要除基本 iso8601 或 to_string 之外的更多格式,您需要查看 https://hexdocs.pm/timex/Timex.html#format/2