Page 1 of 1

Obtener el dia utimo de cada mes

Posted: Fri Apr 07, 2017 10:39 pm
by jorge.posadas
Grupo

¿Existe alguna función donde , pasando una fecha "X" me regrese la fecha final del mes de la fecha "X"?

Ejemplo : Si mi fecha inicial es 13/02/2017, entonces debo de obtener 28/02/2017 o 29/02/2017, o si mi fecha inicial es 3/04/2017 entonces debo obtener 30/04/2017,

No he encontrado nada en HARBOUR para tal efecto,

Mucho agradeceré la ayuda

Re: Obtener el dia utimo de cada mes

Posted: Fri Apr 07, 2017 10:49 pm
by Pablo César
Existe esa funcion. Es la función EOM() igual al del Clipper (pertence a la hbct lib)
https://harbour.github.io/doc/hbct.html#eom

Si quieres ver como es la lógica en la practica podrias hacer asi:

SET CENTURY ON
SET DATE TO BRITISH
dFecha_Ini:=CTodD("13/02/2017")
dUltimo_Dia_Mes:=CTodD("01/"+(Month(dFecha_Ini)+1)+"/"+Year(dFecha_Ini))-1 // Sustrae 1 dia del primero dia del mes siguiente. :D

Re: Obtener el dia utimo de cada mes

Posted: Fri Apr 07, 2017 11:03 pm
by apais
eso puede generar un mes 13

esta funcion me funciona a mi

FUNCTION EOM(dDate)
IF dDate = NIL
dDate := DATE()
ENDIF
dDate += ( 45 - day( dDate ) )
RETURN dDate - day( dDate )

Re: Obtener el dia utimo de cada mes

Posted: Fri Apr 07, 2017 11:12 pm
by Pablo César
Ahhh si tenés razón. Gracias Angel.

Code: Select all

SET CENTURY ON
SET DATE TO BRITISH
dFecha_Ini:=CTodD("13/02/2017")
dMes:=Month(dFecha_Ini)
dUltimo_Dia_Mes:=CTodD("01/"+If(dMes=12,1,dMes+1)+"/"+If(dMes=12,Year(dFecha_Ini)+1,Year(dFecha_Ini)))-1 // Sustrae 1 dia del primero dia del mes siguiente.
Si bien que con EOM ya resuelve el caso.
Tu funcion tambien debe funcionar bien.