1 de abril de 2000

Primer día del mes de un día de la semana

Hay algunas ocasiones en las que es útil saber el primer día del mes en el que cae un día de la semana. Por ejemplo en los Estados Unidos el primer lunes de septiembre es vacaciones.

La siguiente función dado un mes y un año devuelve la fecha en la que cae un día de la semana 1 = Domingo, 2 = Lunes,...
* FUNCTION: FirstDay.prg

LPARAMETERS pnmonth, pnyear, pndow

* Parameter list description
* pnmonth numero del mes (1-12)
* pnyear numero del año (en formato cuatro digitos)
* pndow dia de la semana a investigar (Domingo = 1, Lunes = 2, etc.)

LOCAL ldresult, lddate, lndow
lddate = DATE(pnyear, pnmonth, 1)
ldresult = lddate
* Fuerza a VFP 5.0/6.0 a usar el Domingo
* como primer dia de la semana
* Versiones anteriores deberan borrar el parametro
lnfirstday = DOW(lddate, 1)
IF lnfirstday   IF lnfirstday < pndow
    ldresult = lddate + (pndow - lnfirstday)
  ELSE
    ldresult = lddate + (7 + pndow) - lnfirstday
  ENDIF
ENDIF
RETURN ldresult
Ejemplo:
* Saber el primer Lunes de septiembre del año actual.
ldSeptMon = FirstDay(9, YEAR(DATE()), 2)

No hay comentarios. :

Publicar un comentario