Calculating Nth Occurrence for Day Of Week in the Month

This is sample code. Add error handling and adjust to your requirements as necessary.

FUNCTION NthDowOfMonth(tnYear, tnMonth, tnOccurrence, tcDow)
* Parameters
*   tnYear, tnMonth - Year and Month
*   tnOccurrence - Day of week occurrence (1-5)
*   tcDow - Day of week name (at least 3 first characters) 
 
LOCAL lnDOW, ldDate, lnDowPos
lnDowPos = AT(UPPER(PADR(tcDow,3)), "SAT SUN MON TUE WED THU FRI")
IF lnDowPos = 0
	ldDate = {}
ELSE
	TRY 
		lnDOW  = DOW(DATE(tnYear, tnMonth, 01), INT(lnDowPos/4) + 1)
		ldDate = DATE(tnYear, tnMonth, 7 - lnDOW + 1 + (tnOccurrence -1)*7)
	CATCH
		ldDate = {}
	ENDTRY
ENDIF	
RETURN ldDate
No votes yet