View Source Kday (Kday v1.1.0)
Functions to return the date of the first, last or nth day of the week on, nearest, before or after a given date.
Summary
Functions
Returns the day of the week for a given
Date.t/0.
Return the date of the first day_of_week on or after the
specified date.
Returns the day of the week for a given
gregorian_day_number.
Return the date of the day_of_week after the
specified date.
Return the date of the day_of_week before the
specified date.
Return the date of the day_of_week nearest the
specified date.
Return the date of the day_of_week on or after the
specified date.
Return the date of the day_of_week on or before the
specified date.
Return the date of the last day_of_week on or before the
specified date.
Return the date of the nth day_of_week on or before/after the
specified date.
Returns the number of days in n weeks.
Functions
@spec day_of_week(Date.t()) :: Calendar.day_of_week()
Returns the day of the week for a given
Date.t/0.
Arguments
dateisDate.t/0orDateTime.t/0.
Returns
- An integer representing a day of the week where Monday
is represented by
1and Sunday is represented by7.
Examples
iex> Kday.day_of_week(~D[2019-01-01]) == 2
true
@spec first_kday(Calendar.day() | Date.t(), Calendar.day_of_week()) :: Calendar.day() | Date.t()
Return the date of the first day_of_week on or after the
specified date.
Arguments
dateisDate.t/0, aDateTime.t/0,NaiveDateTime.t/0or Gregorian days since epoch.kis an integer day of the week where Monday is represented by1and Sunday is represented by7.
Returns
- A
%Date{”}in the calendar of the date provided as an argument
Examples
# US election day
iex> Kday.first_kday(~D[2017-11-02], 2)
~D[2017-11-07]
# US Daylight savings end
iex> Kday.first_kday(~D[2017-11-01], 7)
~D[2017-11-05]
@spec gregorian_days_to_day_of_week(integer()) :: Calendar.day_of_week()
Returns the day of the week for a given
gregorian_day_number.
Arguments
gregorian_day_numberis the number of days since the start of the epoch.
Returns
- An integer representing a day of the week where Monday
is represented by
1and Sunday is represented by7.
Examples
iex> days = Date.to_gregorian_days ~D[2019-01-01]
iex> Kday.gregorian_days_to_day_of_week(days) == 2
true
@spec kday_after(Calendar.day() | Date.t(), Calendar.day_of_week()) :: Calendar.day() | Date.t()
Return the date of the day_of_week after the
specified date.
Arguments
dateisDate.t/0, aDateTime.t/0,NaiveDateTime.t/0or Gregorian days since epoch.kis an integer day of the week where Monday is represented by1and Sunday is represented by7.
Returns
- A
Date.t/0in the calendar of the date provided as an argument
Examples
iex> Kday.kday_after(~D[2016-02-29], 2)
~D[2016-03-01]
iex> Kday.kday_after(~D[2017-11-30], 1)
~D[2017-12-04]
iex> Kday.kday_after(~D[2017-06-30], 6)
~D[2017-07-01]
iex> Kday.kday_after(~D[2021-03-28], 7)
~D[2021-04-04]
@spec kday_before(Calendar.day() | Date.t(), Calendar.day_of_week()) :: Calendar.day() | Date.t()
Return the date of the day_of_week before the
specified date.
Arguments
dateisDate.t/0, aDateTime.t/0,NaiveDateTime.t/0or Gregorian days since epoch.kis an integer day of the week where Monday is represented by1and Sunday is represented by7.
Returns
- A
Date.t/0in the calendar of the date provided as an argument
Examples
iex> Kday.kday_before(~D[2016-02-29], 2)
~D[2016-02-23]
iex> Kday.kday_before(~D[2017-11-30], 1)
~D[2017-11-27]
# 6 means Saturday. Use either the integer value or the atom form.
iex> Kday.kday_before(~D[2017-06-30], 6)
~D[2017-06-24]
@spec kday_nearest(Calendar.day() | Date.t(), Calendar.day_of_week()) :: Calendar.day() | Date.t()
Return the date of the day_of_week nearest the
specified date.
Arguments
dateisDate.t/0, aDateTime.t/0,NaiveDateTime.t/0or Gregorian days since epoch.kis an integer day of the week where Monday is represented by1and Sunday is represented by7.
Returns
- A
Date.t/0in the calendar of the date provided as an argument
Examples
iex> Kday.kday_nearest(~D[2016-02-29], 2)
~D[2016-03-01]
iex> Kday.kday_nearest(~D[2017-11-30], 1)
~D[2017-11-27]
iex> Kday.kday_nearest(~D[2017-06-30], 6)
~D[2017-07-01]
@spec kday_on_or_after(Calendar.day() | Date.t(), Calendar.day_of_week()) :: Calendar.day() | Date.t()
Return the date of the day_of_week on or after the
specified date.
Arguments
dateisDate.t/0, aDateTime.t/0,NaiveDateTime.t/0or Gregorian days since epoch.kis an integer day of the week where Monday is represented by1and Sunday is represented by7.
Returns
- A
Date.t/0in the calendar of the date provided as an argument
Examples
iex> Kday.kday_on_or_after(~D[2016-02-29], 2)
~D[2016-03-01]
iex> Kday.kday_on_or_after(~D[2017-11-30], 1)
~D[2017-12-04]
iex> Kday.kday_on_or_after(~D[2017-06-30], 6)
~D[2017-07-01]
@spec kday_on_or_before(Calendar.day() | Date.t(), Calendar.day_of_week()) :: Calendar.day() | Date.t()
Return the date of the day_of_week on or before the
specified date.
Arguments
dateisDate.t/0, aDateTime.t/0,NaiveDateTime.t/0or Gregorian days since epoch.kis an integer day of the week where Monday is represented by1and Sunday is represented by7.
Returns
- A
Date.t/0in the calendar of the date provided as an argument
Examples
iex> Kday.kday_on_or_before(~D[2016-02-29], 2)
~D[2016-02-23]
iex> Kday.kday_on_or_before(~D[2017-11-30], 1)
~D[2017-11-27]
iex> Kday.kday_on_or_before(~D[2017-06-30], 6)
~D[2017-06-24]
iex> Kday.kday_on_or_before(~D[2023-09-29], 5)
~D[2023-09-29]
@spec last_kday(Calendar.day() | Date.t(), Calendar.day_of_week()) :: Calendar.day() | Date.t()
Return the date of the last day_of_week on or before the
specified date.
Arguments
dateisDate.t/0, aDateTime.t/0,NaiveDateTime.t/0or Gregorian days since epoch.kis an integer day of the week where Monday is represented by1and Sunday is represented by7.
Returns
- A
Date.t/0in the calendar of the date provided as an argument.
Example
# Memorial Day in the US
iex> Kday.last_kday(~D[2017-05-31], 1)
~D[2017-05-29]
@spec nth_kday(Calendar.day() | Date.t(), integer(), Calendar.day_of_week()) :: Calendar.day() | Date.t()
Return the date of the nth day_of_week on or before/after the
specified date.
Arguments
dateisDate.t/0, aDateTime.t/0,NaiveDateTime.t/0or Gregorian days since epoch.nis the cardinal number ofkbefore (negativen) or after (positiven) the specified datekis an integer day of the week where Monday is represented by1and Sunday is represented by7.
Returns
- A
Date.t/0in the calendar of the date provided as an argument
Examples
# Thanksgiving in the US
iex> Kday.nth_kday(~D[2017-11-01], 4, 4)
~D[2017-11-23]
# Labor day in the US
iex> Kday.nth_kday(~D[2017-09-01], 1, 1)
~D[2017-09-04]
# Daylight savings time starts in the US
iex> Kday.nth_kday(~D[2017-03-01], 2, 7)
~D[2017-03-12]
Returns the number of days in n weeks.
Example
iex> Kday.weeks_to_days(2)
14