1
我需要從Ecto檢索的數據庫到UTC的當前時間之間查找分鐘之差。據我所知,如果不使用Timex等第三方庫,在Elixir上運行的時序並不是微不足道的。然而,我想避免使用第三方依賴關係。那麼我怎麼能找到一個時間差異?我知道我可以通過DateTime.utc_now()
得到當前時間,但接下來是什麼,如何從數據庫中減去日期時間,格式爲Ecto.DateTime
?在Elixir中使用datetime
我需要從Ecto檢索的數據庫到UTC的當前時間之間查找分鐘之差。據我所知,如果不使用Timex等第三方庫,在Elixir上運行的時序並不是微不足道的。然而,我想避免使用第三方依賴關係。那麼我怎麼能找到一個時間差異?我知道我可以通過DateTime.utc_now()
得到當前時間,但接下來是什麼,如何從數據庫中減去日期時間,格式爲Ecto.DateTime
?在Elixir中使用datetime
我相信很快Ecto就有計劃暫時使用原生Elixir Datetime格式,我知道你的痛苦。
一種解決方案是到胞外日期時間轉換爲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秒前。
你可以很容易地從那裏解構元組,並只取得你需要的組件(在你的情況下是分鐘)。
E.g.
{_, {_h, minutes, _s}} = time_diff