如何将日期和时间字符串解析为与Elixir的Ecto.DateTime兼容的类型?

时间:2016-11-30 22:04:04

标签: elixir phoenix-framework ecto timex

在我的凤凰应用程序中,我有一个带有日期/时间字段的表单,它将日期时间值放入params中,格式如下:

2016-11-30 20:00

我可以使用Timex库解析它:

Timex.parse("2016-11-30 20:00", "%Y-%m-%d %H:%M", :strftime)

结果是:

{:ok, ~N[2016-11-30 20:00:00]}

“~N [2016-11-30 20:00:00]”是一个“天真”的日期时间值,不包括时区。问题是:此值类型与Ecto.DateTime不匹配,因此我无法将其放入变更集并保存到我的数据库中。

问题:如何将字符串中的日期和时间解析为具有特定时区的Ecto.DateTime值(例如,美国/东部)?

1 个答案:

答案 0 :(得分:3)

虽然有许多方法可以从天真的产品中产生ecto兼容的价值,但还有更强大的解决方案:Timex Plugin for Ecto

它的源代码可能会激励所有仍想在内部重新实现轮子的人。