首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elixir/Phoenix/Timex:协议Timex.Protocol未为其实现:错误

Elixir/Phoenix/Timex:协议Timex.Protocol未为其实现:错误
EN

Stack Overflow用户
提问于 2016-08-03 08:20:05
回答 1查看 369关注 0票数 2

我正在尝试解析一个日期并将其保存到一个表中。下面是函数:

代码语言:javascript
复制
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

字符串需要在开始时进行一些清理,但当我尝试将其保存到此字段时出现错误:

代码语言:javascript
复制
field :first_appointment, Timex.Ecto.DateTime

下面是错误:

代码语言:javascript
复制
** (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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-03 09:52:15

Timex.parse/2期望返回{:ok, dt}{:error, reason}

你必须像这样改变你的案例结果:

代码语言:javascript
复制
case result do
  {:ok, dt} -> dt
  {:error, reason} -> IO.inspect reason
end

这来自于Timex的实现:

代码语言:javascript
复制
@spec parse(String.t, String.t) :: {:ok, DateTime.t | NaiveDateTime.t} | {:error, term}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38732453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档