Ecto.Datetime 获取 15 分钟前
Ecto.Datetime get 15 minutes ago
Ecto.DateTime.utc
returns 当前日期时间。
如何在 15 分钟前创建 Ecto.DateTime
?
使用 :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
与之前相同的输出。
Ecto.DateTime.utc
returns 当前日期时间。
如何在 15 分钟前创建 Ecto.DateTime
?
使用 :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
与之前相同的输出。