Получить начало месяца Эликсир
Не могу получить начало месяца от Ecto.Date
Ecto.Date.utc => #Ecto.Date<2017-09-15>
Ecto.Date.utc.beginning_of_month requires => 2017-09-01
2 ответа
Вы можете просто установить значение day
в 1
используя синтаксис обновления карты:
iex(1)> today = Ecto.Date.utc
#Ecto.Date<2017-09-15>
iex(2)> %{today | day: 1}
#Ecto.Date<2017-09-01>
Ecto.Date
устарел в последней версии Ecto, поэтому, если вы перейдете на новую версию ядра Elixir Date
struct, та же самая техника будет работать для этого также:
iex(3)> today = Date.utc_today
~D[2017-09-15]
iex(4)> %{today | day: 1}
~D[2017-09-01]
В Elixir теперь есть несколько встроенных функций для этого.
iex> Date.beginning_of_month(~D[2000-01-31])
~D[2000-01-01]
iex> Date.end_of_month(~D[2000-01-01])
~D[2000-01-31]