使用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}返回中一个更有意义的错误,但这并没有产生任何不同的结果。
这很可能是因为我对灵丹妙药缺乏经验,所以我错过了什么?
完整代码:
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炼金术士评价中生产的那样
nofile:58: warning: redefining module Elixirlearning
#<Date(2016-04-20)>
#<Date(2015-12-01)>
0
%ArgumentError{message: "argument error"}澄清一下,这是在OSX上的emacs的spacemacs版本中使用‘炼金术士- version’选项,并在一个新窗口中生成上述输出。
下面是我所看到的一切的截图,以防它提供我不想看到的信息:

发布于 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
iex(25)> Application.ensure_all_started :timex{:ok,:idna,:mimerl,:证书,:ssl_verify_fun,:度量,:hackney,:tzdata,:gettext,:timex}
iex(29)> Timex.compare(Timex.date({2015, 12, 1}), Timex.date({2015, 12, 2}))-1
确保启动此应用程序的一个简单方法是将其作为mix.exs中的应用程序依赖项列出。
https://stackoverflow.com/questions/36725820
复制相似问题