【问题标题】:Elixir/Phoenix/Timex: protocol Timex.Protocol not implemented for :errorElixir/Phoenix/Timex:协议 Timex.Protocol 未实现:错误
【发布时间】:2016-08-03 00:20:05
【问题描述】:

我正在尝试解析日期并将其保存到表格中。函数如下:

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

真的不知道这意味着什么。有什么想法吗?

【问题讨论】:

    标签: elixir phoenix-framework timex


    【解决方案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}
    

    【讨论】:

      猜你喜欢
      • 2017-07-01
      • 2017-04-19
      • 2017-12-11
      • 2016-05-09
      • 2018-11-23
      • 1970-01-01
      • 2015-02-24
      • 2021-10-15
      • 2015-09-03
      相关资源
      最近更新 更多