2016-08-03 24 views
2

我想解析一个日期并将其保存到表中。这里的功能:Elixir/Phoenix/Timex:协议Timex.Protocol没有实现:错误

defp string_to_datetime(string) do 
    result = string 
      |> String.split(";") 
      |> List.last 
      |> Timex.parse("{0M}/{0D}/{YYYY} {h12}:{m} {AM}") 
    case result do 
    {dt, _} -> dt 
    :error -> nil 
    end 
end 

的字符串需要在启动一些清理,但我得到一个错误,当我尝试将其保存到这个领域:

field :first_appointment, Timex.Ecto.DateTime 

这里的错误:

** (exit) an exception was raised: 
    ** (Protocol.UndefinedError) protocol Timex.Protocol not implemented for :error 
     (timex) lib/protocol.ex:1: Timex.Protocol.impl_for!/1 
     (timex) lib/protocol.ex:36: Timex.Protocol.to_datetime/2 

真的不知道这是什么意思。有任何想法吗?

回答

2

Timex.parse/2预计在回报{:ok, dt}{:error, reason}

你必须改变你的情况下,导致这样的:

case result do 
    {:ok, dt} -> dt 
    {:error, reason} -> IO.inspect reason 
end 

这是从天美时实施:

@spec parse(String.t, String.t) :: {:ok, DateTime.t | NaiveDateTime.t} | {:error, term} 
+0

啊,谢谢,你!而不是Elixir新手。 –