Эликсир / Феникс /Timex: протокол Timex. Протокол не реализован для: ошибка
Я пытаюсь разобрать дату и сохранить ее в таблицу. Вот функция:
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
На самом деле не уверен, что это значит. Есть идеи?
1 ответ
Решение
Timex.parse/2
ожидает возврата либо {:ok, dt}
или же {:error, reason}
Вы должны изменить результат своего дела следующим образом:
case result do
{:ok, dt} -> dt
{:error, reason} -> IO.inspect reason
end
Это из реализации Timex:
@spec parse(String.t, String.t) :: {:ok, DateTime.t | NaiveDateTime.t} | {:error, term}