我需要将包含有效UTC时间的字符串转换为Ecto.DateTime
,我稍后会以正确的格式将其插入到我的数据库中。我尝试过使用Ecto.DateTime.cast(date)
方法,但似乎没有用。该字符串为Sat Aug 04 11:48:27 +0000 2012
,来自Twitter API。
我知道有一些像 Timex 这样的库,我还没有检查过。 Elixir中是否有任何简单易用的解决方案?
答案 0 :(得分:8)
没有内置解决方案,用于解析此格式的DateTime
值:
Sat Aug 04 11:48:27 +0000 2012
你当然可以自己编写一个解析器,但它既不简短也不简单。您必须拆分字符串,获取日期和时间参数的值,将月份字符串转换为月份整数,解析时区,用Elixir / Erlang DateTime格式表示完整值,然后最终将其转换为{{ 1}}。请参阅以下链接:
使用Timex是此处的最佳选择。
它是一个写得很好的图书馆,可以让你远离日期/时间内部运作的混乱。使用Ecto.DateTime
,您可以像这样解析字符串:
Timex
注意:Timex内置了对许多常见DateTime格式的支持,我发现由Twitter支持的DateTime格式不受支持是很奇怪的 - 所以我写了一个为了你。也许仔细检查你的字符串是否正确?另请查看Timex Parsing和Formatting文档。