DateTime.now in Elixir and Ecto

As of Ecto 3, Ecto.Date, Ecto.Time and Ecto.DateTime no longer exist, as stated here.

However, Elixir now ships with DateTime, Date and NaiveDateTime, which should be used.

iex(1)> DateTime.utc_now
#DateTime<2019-01-14 12:05:52.271492Z>

Ecto has Ecto.DateTime.utc/1 to get the current time in UTC:

iex(1)> Ecto.DateTime.utc
#Ecto.DateTime<2016-09-05 13:30:04>
iex(2)> Ecto.DateTime.utc(:usec) # include microseconds
#Ecto.DateTime<2016-09-05 13:30:18.367318>

If you want the current time in the local system's timezone, you can do:

Ecto.DateTime.from_erl(:erlang.localtime)