I have forgotten
my Password

Or login with:

  • Facebookhttp://facebook.com/
  • Googlehttps://www.google.com/accounts/o8/id
  • Yahoohttps://me.yahoo.com
get GPL
COST (GBP)
this unit 5.62
sub units 6.68
+
0
UnitsDate

nth Week Day

viewed 2486 times and licensed 86 times
Returns the date of the nth weekday within the specified month and year.
Controller: CodeCogs

Dependents

Info

Interface

C++
Excel

NthWeekDay

 
intnthWeekDayintNth
intWeekDay
intYear
intMonth
intType = 1 )
Calculates the date of the nth occurance of a particular weekday (Sunday to Saturday) within a specified month and year. Many public holidays and other events (see also summerTime) are performed on specific days of the week; very often the first or last occurance of that day within the month. This function uses weekdays within the Gregorian calendar to return the serial Julian date (number of days since 24 November 4714BC).

For example, US events include:
  • Martin Luther King Day, third Monday in January
  • President's Day, third Monday in February
  • Armed Forces Day, third Saturday in May
  • Mother's Day, second Sunday in May
  • Memorial Day, last Monday in May
  • Father's Day, third Sunday in June
  • Labor Day, first Monday in September
  • Columbus Day, second Monday in October
  • Thanksgiving Day, fourth Thursday in November

UK holidays include:
  • May Day Bank Holiday, first Monday in May
  • Spring Bank Holiday, last Monday in May
  • Late Summer Holiday, last Monday in August

Example 1

To compute the UK holidays:
#include <stdio.h>
#include <codecogs/units/date/nthweekday.h>
#include <codecogs/units/date/dateymd.h>
#include <codecogs/units/date/month_str.h>
using namespace Units::Date;
 
int main()
{
  int d,m,y;
  for(int i=2004; i<=2006; i++)
  {
    printf("\nIn %d:",i);
    dateYMD(nthWeekDay(1, Monday, i, May), y,m,d);        // First Monday
    printf("\n   May Day Bank Holiday is on: %2d %s",d,month_str(m));
 
    dateYMD(nthWeekDay(0, Monday, i, May), y,m,d);        // last Monday
    printf("\n   Spring Bank Holiday is on:  %2d %s",d,month_str(m));
 
    dateYMD(nthWeekDay(0, Monday, i, August), y,m,d);     // last Monday
    printf("\n   Late Summer Holiday is on:  %2d %s",d,month_str(m));
  }
  return 0;
}
Output:
In 2004:
May Day Bank Holiday is on:  3 May
Spring Bank Holiday is on:  31 May
Late Summer Holiday is on:  30 August
In 2005:
May Day Bank Holiday is on:  2 May
Spring Bank Holiday is on:  30 May
Late Summer Holiday is on:  29 August
In 2006:
May Day Bank Holiday is on:  1 May
Spring Bank Holiday is on:  29 May
Late Summer Holiday is on:  28 August

  • Type=1 : WeekDay contains numbers 1 (Sunday) through 7 (Saturday) - default behaviour of Microsoft cal_Excel.
  • Type=2 : WeekDay contains numbers 1 (Monday) through 7 (Sunday).
  • Type=3 : WeekDay contains numbers 0 (Monday) through 6 (Sunday).

Parameters

Nthidentifies which WeekDay from the start of the month to obtain (e.g. the 1st Friday, 3rd Monday). A zero value will return the date of the last WeekDay, with negative values returning earlier weekdays from the end of the month.
WeekDayis the day of the week required, with its value depending upon the Type (see below).
Yearcan be any integer greater than 4800 BC (-4799).
Monthcontains the month of the year. This value must be within the range -9 to 14 (inclusive), though value outside the range 1-12 will be divided by by 12, such that the Year incremented by the quotient and the Month set to the remainder.
Typedefines the input form for the WeekDay:

Authors

Will Bateman
Source Code

Source code is available when you agree to a GP Licence or buy a Commercial Licence.

Not a member, then Register with CodeCogs. Already a Member, then Login.