如何在Elixir中将字符串转换为exto.DateTime?
我需要将包含有效UTC时间的字符串转换为如何在Elixir中将字符串转换为exto.DateTime?,datetime,elixir,phoenix-framework,ecto,Datetime,Elixir,Phoenix Framework,Ecto,我需要将包含有效UTC时间的字符串转换为exto.DateTimeone,稍后我将以正确的格式将其插入数据库。我尝试过使用exto.DateTime.cast(date)方法,但似乎不起作用。字符串是Sat Aug 04 11:48:27+0000 2012,来自Twitter API 我知道有一些库,比如Timex,我还没有检查过。Elixir中是否已经内置了任何简单的工作解决方案?Elixir或Erlang中没有内置解决方案用于解析此格式的DateTime值: Sat Aug 04 11:4
exto.DateTime
one,稍后我将以正确的格式将其插入数据库。我尝试过使用exto.DateTime.cast(date)
方法,但似乎不起作用。字符串是Sat Aug 04 11:48:27+0000 2012
,来自Twitter API
我知道有一些库,比如Timex,我还没有检查过。Elixir中是否已经内置了任何简单的工作解决方案?Elixir或Erlang中没有内置解决方案用于解析此格式的
DateTime
值:
Sat Aug 04 11:48:27 +0000 2012
您当然可以自己编写解析器,但它既不简短也不简单。您必须拆分字符串,获取日期和时间参数的值,将月份字符串转换为月份整数,解析时区,以Elixir/Erlang DateTime格式表示完整的值,然后最后将其转换为exto.DateTime
。请参阅以下链接:
在这里使用是最好的选择。 这是一个写得很好的库,可以让你远离日期/时间内部工作的混乱。使用
Timex
,您可以像这样解析字符串:
"Sat Aug 04 11:48:27 +0000 2012"
|> Timex.parse!("%a %b %d %T %z %Y", :strftime)
|> Ecto.DateTime.cast!
# => #Ecto.DateTime<2012-08-04 11:48:27>
“2012年8月4日星期六11:48:27+0000”
|>Timex.parse!(%a%b%d%T%z%Y),:strftime)
|>埃克托。日期时间。演员!
#=>#外部日期时间
注意:Timex内置了对许多常见日期时间格式的支持,我发现Twitter发送的日期时间格式不受支持很奇怪,所以我为您写了一个。也许再检查一下你的字符串是否正确?还可以看看Timex和文档。Twitter发送的格式看起来非常奇怪,您不是第一个感到惊讶的人,谢谢您的输入:)