在长生不老药中与DateTime一起工作



我需要在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

最新更新