Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Elixir中将字符串转换为exto.DateTime?_Datetime_Elixir_Phoenix Framework_Ecto - Fatal编程技术网

如何在Elixir中将字符串转换为exto.DateTime?

如何在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

我需要将包含有效UTC时间的字符串转换为
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发送的格式看起来非常奇怪,您不是第一个感到惊讶的人,谢谢您的输入:)