首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在传递Timex.date/1的结果时,为什么在Timex库Timex.compare/2中接收ArgumentError?

在传递Timex.date/1的结果时,为什么在Timex库Timex.compare/2中接收ArgumentError?
EN

Stack Overflow用户
提问于 2016-04-19 17:48:08
回答 1查看 570关注 0票数 0

使用Elixir1.2.4并使用Timex2.1.4作为依赖项,我运行以下代码:

Timex.compare(Timex.date({2015, 12, 1}), Timex.date({2016,1,1}))

它与错误一起中断:

%ArgumentError{message: "argument error"}

但如果我跑:

Timex.compare(Timex.Date.now, Timex.Date.now)

我收到一个期望值(0或“等于”)。

当我IO.inspect Timex.date/1调用的结果时,我看到的是从Timex.Date.now调用中获得的相同日期信息,尽管包含的日期不同。

我尝试了一个case ... do模式匹配,以确定我是否放弃了{:error, term}返回中一个更有意义的错误,但这并没有产生任何不同的结果。

这很可能是因为我对灵丹妙药缺乏经验,所以我错过了什么?

完整代码:

代码语言:javascript
复制
defmodule Elixirlearning do

  n = Timex.date({2015, 12, 1})
  IO.inspect Timex.Date.now
  IO.inspect n
  IO.inspect Timex.compare(Timex.Date.now, Timex.Date.now)
  IO.inspect Timex.compare(Timex.date({2015, 12, 1}), Timex.date({2016,1,1}))

end

输出,如空间Output炼金术士评价中生产的那样

代码语言:javascript
复制
nofile:58: warning: redefining module Elixirlearning
#<Date(2016-04-20)>
#<Date(2015-12-01)>
0
%ArgumentError{message: "argument error"}

澄清一下,这是在OSX上的emacs的spacemacs版本中使用‘炼金术士- version’选项,并在一个新窗口中生成上述输出。

下面是我所看到的一切的截图,以防它提供我不想看到的信息:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-19 21:42:17

timex可能还没有开始。您需要确保启动它:

Application.ensure_all_started :timex

Timex.compare(Timex.date({2015,12,1}),Timex.date({2015,12,2})) ** (ArgumentError)参数错误(stdlib) :ets.lookup(:tzdata_current_release,Tzdata.ReleaseReader.current_release_from_table/0 /tzdata/ReleaseReader.ex:41::release_version lib/tzdata/ReleaseReader.ex:13:Tzdata.ReleaseReader.SimpleReader.Simple_lookup/1 lib/tzdata/ReleaseReader.ex:7:Tzdata.ReleaseReader.zone_:release_version_list/0 lib/tzdata.ex:61: Tzdata.zone_exists?/1 lib/Timezone.ex:166: Timex.Timezone.do_get/3 lib/Timezone.ex:310:Timex.Timezone.转化率/2 lib/datetime/datetime.ex:532: Timex.DateTime.to_秒/3

代码语言:javascript
复制
iex(25)> Application.ensure_all_started :timex

{:ok,:idna,:mimerl,:证书,:ssl_verify_fun,:度量,:hackney,:tzdata,:gettext,:timex}

代码语言:javascript
复制
iex(29)> Timex.compare(Timex.date({2015, 12, 1}), Timex.date({2015, 12, 2}))

-1

确保启动此应用程序的一个简单方法是将其作为mix.exs中的应用程序依赖项列出。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36725820

复制
相关文章

相似问题

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