【问题标题】:How do you parse a date and time string into a type compatible with Elixir's Ecto.DateTime?如何将日期和时间字符串解析为与 Elixir 的 Ecto.DateTime 兼容的类型?
【发布时间】:2016-11-30 22:04:04
【问题描述】:

在我的 Phoenix 应用程序中,我有一个带有日期/时间字段的表单,它将日期时间值按以下格式放入参数中:

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 值?

【问题讨论】:

    标签: elixir phoenix-framework ecto timex


    【解决方案1】:

    虽然有很多方法可以从幼稚的方法中产生与外部兼容的值,但还有更强大的解决方案:Timex Plugin for Ecto

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

    【讨论】:

    • 太好了,谢谢 - 这很有效。我将字段类型从 Ecto.DateTime 更改为 Timex.Ecto.DateTime,然后我必须确保使用时区正确格式化我的日期时间值:“2016-12-01 12:00:00-0500”或“2016- 12-01 12:00:00Z”。提交在我的项目中修复它:github.com/alex-kovshovik/shovik_com/commit/…
    猜你喜欢
    • 2018-02-20
    • 2019-12-15
    • 2013-08-13
    • 2017-03-19
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多