Получить начало месяца Эликсир

Не могу получить начало месяца от 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]

https://hexdocs.pm/elixir/Date.html#beginning_of_month/1

Другие вопросы по тегам