2016-08-03 27 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新手。 –