Obtener el dia utimo de cada mes

HMG en Español

Moderator: Rathinagiri

Post Reply
jorge.posadas
Posts: 174
Joined: Mon May 19, 2014 7:43 pm
DBs Used: DBF, SQLite, MS-SQL, ACCESS, MariaDB (en proceso)
Location: Morelia, Mich. México
Contact:

Obtener el dia utimo de cada mes

Post 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
Cordialmente

POSADAS SOFTWARE
Jorge Posadas Ch.
Programador independiente
Morelia, Mich.
M é x i c o .
Movil +52 44 3734 1858
SKYPE: jorge.posadasch
Email: posoft@gmx.com
User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil

Re: Obtener el dia utimo de cada mes

Post 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
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
User avatar
apais
Posts: 440
Joined: Fri Aug 01, 2008 6:03 pm
DBs Used: DBF
Location: uruguay
Contact:

Re: Obtener el dia utimo de cada mes

Post 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 )
Angel Pais
Web Apps consultant/architect/developer.
User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil

Re: Obtener el dia utimo de cada mes

Post 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.
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
Post Reply