Ecto.Datetime获得15分钟前

时间:2016-08-12 15:45:17

标签: elixir ecto

Ecto.DateTime.utc返回当前日期时间。

如何在15分钟前创建Ecto.DateTime

1 个答案:

答案 0 :(得分:7)

使用:erlang.universaltime获取时间(Ecto将此用于Ecto.DateTime.utc/0),使用:calendar转换为格里高利秒,减去15 * 60,转换回Erlang时间元组,然后执行回到Ecto.DateTime

iex(1)> utc = :erlang.universaltime |> :calendar.datetime_to_gregorian_seconds
63638236105
iex(2)> fifteen_minutes_ago = (utc - 15 * 60) |> :calendar.gregorian_seconds_to_datetime |> Ecto.DateTime.cast!
#Ecto.DateTime<2016-08-12 15:33:25>

编辑:这里的管道可能看起来更好:

:erlang.universaltime
|> :calendar.datetime_to_gregorian_seconds
|> Kernel.-(15 * 60)
|> :calendar.gregorian_seconds_to_datetime
|> Ecto.DateTime.cast!
|> IO.inspect

与之前相同的输出。