我从客户端应用程序收到2017-03-20 17:01:24
形式的某些日期,我想比较并提取小时数,天数,分钟数或任何可用的计数器(我希望它灵活)。< / p>
我看到timex
包的内容如下:
Duration.diff(Duration.now, Duration.zero, :days)
我的问题是我不知道如何使这个diff
与我的两个日期一起工作。
我尝试过:
end_timex = Timex.parse!("2017-03-20 17:01:24", "%Y-%m-%d %H:%M:%S", :strftime)
start_timex = Timex.parse!("2017-03-19 17:01:24", "%Y-%m-%d %H:%M:%S", :strftime)
diff = Duration.diff(end_timex, start_timex, :days)
但显然失败了:
** (FunctionClauseError) no function clause matching in Timex.Duration.diff/3
(timex) lib/time/duration.ex:612: Timex.Duration.diff(~N[2017-03-20 17:01:24], ~N[2017-03-19 17:01:24], :days)
答案 0 :(得分:3)
不要通过这样做来实现这一目标。
end_timex = Timex.parse!("2017-03-20 17:01:24", "%Y-%m-%d %H:%M:%S", :strftime)
start_timex = Timex.parse!("2017-03-19 17:01:24", "%Y-%m-%d %H:%M:%S", :strftime)
diff_in_days = Timex.diff(end_timex, start_timex, :days)
---> 1
diff_in_hours = Timex.diff(end_timex, start_timex, :hours)
---> 24
此处记录https://hexdocs.pm/timex/2.1.5/Timex.Comparable.html#diff/3 也许我误解了你的问题?
答案 1 :(得分:0)
也许我来晚了,但是如果您只需要几天,就可以使用Date.diff
代码可能看起来像这样:
with {:ok, date} <- Date.from_iso8601(string_date) do
Date.diff(date, Date.utc_today)
end
如果您有DateTime.diff
,也可以使用"%Y-%m-%d %H:%M:%S"