Kday - functions to return the date of the first, last or nth day of the week on, nearest, before or after a given date

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

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]
16 Likes

This is great, thanks for extracting! I wrote my own date_of_nth_weekday/3 a few years ago but it depends on Timex which is fine for that project but not ideal for others.

Thank you so much for this post! I would have never known about Kday without this. I saw another post by you where you advised the person to avoid writing his own time functionality and instead utilize functions in DateTime, Timex and Calendar because they are very well tested and accommodate things like leap year. It took me awhile to understand all of those modules but it was well worth it. Thank you for all your posts!