DateTime.now in Elixir and Ecto
Asked Answered
T

2

13

I want to get the current date-time stamp in Phoenix/Elixir without a third-party library. Or simply, I want something like DateTime.now(). How can I do that?

Threedimensional answered 5/9, 2016 at 13:28 Comment(0)
R
18

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)
Replace answered 5/9, 2016 at 13:30 Comment(0)
D
15

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>
Dituri answered 14/1, 2019 at 12:13 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.