kday is a simple, no-dependencies library to calculate the date of the first, last or nth day of the week on, nearest, before or after a given date. The code is extracted from ex_cldr_calendars so has been in production for several years and therefore considered stable.
Functions
-
first_kday(date, k) - Return the date of the first
day_of_week
on or after the specifieddate
. -
kday_after(date, k) - Return the date of the
day_of_week
after the specifieddate
. -
kday_before(date, k) - Return the date of the
day_of_week
before the specifieddate
. -
kday_nearest(date, k) - Return the date of the
day_of_week
nearest the specifieddate
. -
kday_on_or_after(date, k) - Return the date of the
day_of_week
on or after the specifieddate
. -
kday_on_or_before(date, k) - Return the date of the
day_of_week
on or before the specifieddate
. -
last_kday(date, k) - Return the date of the last
day_of_week
on or before the specifieddate
. -
nth_kday(date, n, k) - Return the date of the
nth
day_of_week
on or before/after the specifieddate
.
Examples
Days of the week follow the elixir convention of 1
being Monday and 7
being Sunday.
# Memorial Day in the US
iex> Kday.last_kday(~D[2017-05-31], 1)
~D[2017-05-29]
iex> Kday.kday_nearest(~D[2016-02-29], 2)
~D[2016-03-01]
iex> Kday.kday_on_or_after(~D[2017-11-30], 1)
~D[2017-12-04]