我需要在UTC中的eTeco和当前时间从数据库中找到分钟的差异。据我所知,如果不使用第三方库(例如Timex),在长生不老药上运行的时机并不小。但是,我想避免使用第三方依赖性。那么我如何找到时间差异呢?我知道我可以通过DateTime.utc_now()
获得当前时间,但是接下来是什么,如何从Ecto.DateTime
格式的数据库中减去日期时间?
我相信,我很快就有计划使用本机elixir datetime格式,我知道您的痛苦。
一种解决方案是将ECTO日期时间转换为ERLANG日期时间格式:
{{YYYY, MM, DD}, {HH, MM, SS}}
,然后使用Erlang日历库进行比较。例如,说我们有一个Post
型号,我们想知道它已更新了多久:
Repo.Post.get!(%Post{}, 1).created_at
|> Ecto.DateTime.to_erl
|> :calendar.time_difference(:calendar.universal_time)
所以假设这篇文章大约是1个月前(2016-10-25t10:24:23)。
通过上述功能运行它将返回:
{30, {17, 30, 53}}
表示30天,17小时30分钟和53秒前。
您可以轻松地从那里破坏元组并仅取所需的组件(在您的情况下为分钟)。
,例如
{_, {_h, minutes, _s}} = time_diff