Formula para calcular años, meses y dias entre dos fechas Con FoxPro 9.0

5,435 views
Skip to first unread message

Rafael Morales

unread,
Nov 2, 2011, 11:46:02 PM11/2/11
to publice...@googlegroups.com
Hola, alguien sabe algun metodo para calcular la edad de una persona en años, meses y dias?, por ejemplo un niño que nació el 15/10/2011 (quince de octubre de 2011), cuántos años, meses y días de vida tiene hasta la fecha 12/01/2012 (doce de enero de 2012). Si alguien sabe o desarrolló alguna rutina para realizar calculculos exactos entre fechas le agradeceria que lo compartiera. Gracias.

--
Rafael

panchimancuso

unread,
Nov 3, 2011, 12:07:50 AM11/3/11
to Comunidad de Visual Foxpro en Español
Te paso una rutina que uso y me costo muchisimo trabajo
desarrollarla , espero la uses , anda de 10

*-----------------
*******************************************
* calcula edad actual *
*******************************************
procedure edad
parameters nac
*******************************************
public eda
hoy=(date())
eda=space(22)
if empty(nac)
eda="ERROR en Fecha Nac. !!!"
return(eda)
endif
xx=1
do while xx=1
resto=0
xm=0
aad=year(date())
aan=0
dia_totn=0
dia_totd=0
interm=0.00
annos=0
xd=0.00
xl=0.00
xmchr=space(2)
edad=space(3)
annonaci=0
aaan=0.00
restoaaan=0
mesdate=0
mesnaci=0
dias=0
aan=year(nac)
annonaci=aan
aaan=aan/4
restoaaan=aan%4
aan=aan*365
aad=aad*365
mmd=month(date())
mmn=month(nac)
mesdate=mmd
mesnaci=mmn
mmd=mmd*30.4
mmn=mmn*30.4
ddd=day(date())
ddn=day(nac)
dia_totd=aad+mmd+ddd
dia_totn=aan+mmn+ddn
resto=dia_totd-dia_totn
do case
case ddd = ddn
dias=0
case ddd > ddn
dias=ddd - ddn
case ddd < ddn
if mesnaci=4 .or. mesnaci=6 .or. mesnaci=9 .or.
mesnaci=11
dias=(30 - ddn)+ddd
endif
if mesnaci= 2
dias=(28 - ddn)+ddd
endif
if mesnaci=1 .or. mesnaci=3 .or. mesnaci=5 .or.
mesnaci=7 .or. mesnaci=8 .or. mesnaci=10 .or. mesnaci=12
dias=(31 - ddn)+ddd
endif
case ddd < ddn .and. mesenaci= 2
if restoaaan = 0
dias=(29 - ddn)+ddd
else
dias=(28 - ddn)+ddd
endif
endcase
*----------------------------------------
interm=resto/365
annos=int(interm) && anios
xd=interm-annos
xl=mod(resto,365)/30.4
xm=int(xl)
xmchr=transform(xm,"99")
aa=iif(annos = 1,"Año",'Años')
mm=iif(xm = 1 ,'Mes', 'Meses')
dz=iif(dias = 1,'Dia', 'Dias ')
eda=" "+ltrim(str(annos,2))+" &aa "+ltrim(xmchr)+" &mm
"+ltrim(str(dias,2))+" &dz "
*----------------------------------------
return(eda)
enddo
*----------------

panchimancuso

unread,
Nov 3, 2011, 12:12:21 AM11/3/11
to Comunidad de Visual Foxpro en Español
te paso otras rutinas probadas

*---------------
function edad2
*---------------
parameter fec2,fec1
*public eda

Dif=Fec2-Fec1
sumar = INT(Dif/1461)
Var1=Dif/365 &&Con decimales
Anos=INT(Var1) &&Entero, indicará los años.
Var1=Var1-Anos &&Tomando el resíduo decimal.
Var1=Var1*12 &&Calculando los meses
Meses=INT(Var1) && El Entero
Var1=(Var1-Meses)*30
Dias=INT(Var1)-Sumar

eda=ALLTRIM(STR(Anos))+" Años, "+ALLTRIM(STR(Meses))+" Meses y
"+ALLTRIM(STR(Dias))+" Días."

RETURN
*---------
function calculoeda(ldnac,infecact,llall)
local ldfec_tem as date, lnk as integer, llcad as string
public eda1
if (ldnac< infecact and not empty( ldnac) )
ldfec_tem=ldnac + 1
lnk = 1
do while ( ldfec_tem < infecact )
ldfec_tem=gomonth(ldnac,lnk)
lnk=lnk + 1
enddo
lnk=lnk - 2
ldfec_tem =gomonth(ldfec_tem, -1)
if llall = .t.
llcad=tran(int(lnk/12),"999") + "Años, " + ;
tran(lnk-(int(lnk/12)*12), "999")+ "meses, " + ;
tran(infecact-ldfec_tem, "999") + "Dias."
else
endif
else
llcad="Error."
endif
eda1=llcad
return eda1
endfunc

ESPERO TE SIRVAN , CUALQUIER DUDA ME COMENTAS.Y ESPERO LES SIRVAN A
MUCHOS DEL FORO,
Saludos
ALBERTO

On 3 nov, 00:46, Rafael Morales <rafamra2...@gmail.com> wrote:

Rafael Morales

unread,
Nov 3, 2011, 1:49:56 AM11/3/11
to publice...@googlegroups.com


Gracias Panchimancuso, La rutina que creaste anda perfecto, es lo que necesitaba, estoy utilizando la primera que enviaste ya que es mas exacta, la segunda también anda perfecta pero no es tan preciso como la primera. Gracias por comprartirla con los demás.

Jose Antonio Blasco

unread,
Nov 3, 2011, 4:57:40 AM11/3/11
to publice...@googlegroups.com
Puedes revisar este articulo de Luis Maria Guayan.
Es muy completo, y entre otras, aparece una función para lo que tu quieres.

--- Trabajar con fechas y hoars en Visual FoxPro ---
http://www.portalfox.com/index.php?name=News&file=article&sid=1162&mode=nested&order=0&thold=0

Un saludo.

El día 3 de noviembre de 2011 06:49, Rafael Morales
<rafam...@gmail.com> escribió:

--
Jose A. Blasco
Zaragoza - España

Rafael Morales

unread,
Nov 3, 2011, 12:06:39 PM11/3/11
to publice...@googlegroups.com
Ok, Gracias Jose por tu aporte.


Allan Raúl Acuña

unread,
Nov 3, 2011, 12:48:30 PM11/3/11
to publice...@googlegroups.com
Estimado Colegas, 

Acá les dejo algo sobre WEBMATRIX

http://www.desarrolloweb.com/articulos/video-instalacion-webmatrix.html

Atentamente;

Lic. Allan R. Acuña
Desarrollador Independiente
msn= allan...@hotmail.com
skype= niceasysoft
+(505) 8 831 8191
www.NicEasySoft.com


GeoSys Diseño de Software

unread,
Nov 3, 2011, 4:18:09 PM11/3/11
to publice...@googlegroups.com
Se ve interesante.
--
José Anthony Contreras Peralta

GeoSys Costa Rica.


spartaco

unread,
Nov 4, 2011, 10:37:47 AM11/4/11
to Comunidad de Visual Foxpro en Español
Saludos

Estoy probando la funciones, pero la que se llama
calculoeda(ldnac,infecact,llall) Puedes explicar para que son los
parámetros y en si que hace.

La otra funcion edad2 con esta fecha, el día en negativo cual es tu
objetivo con esta funcion

MESSAGEBOX(edad2(date(),DATE(1975,10,12)))

Gracias

Douglas Sánchez Guillén

unread,
Nov 5, 2011, 1:28:29 AM11/5/11
to publice...@googlegroups.com
Hola Paisano, pues yo como en el dia no vi el Link no por ceguega, suena como begueta de Gocu, este pues hasta ahorita me lo estoy despachando y creo q le voy a empesar a entrar, mas q trae Joomla y php, pues ahi vamos, yo he estado en la onda de php, como toy x la libre ahorita, y Python. ambos excelente y como le pienso entrar a Lianja con todas las deley y ahi vien Recital vfp, Python. pues apracticar se ha dicho se ve bueno.


Graciela y simo q le entro con todo...




El 3 de noviembre de 2011 10:48, Allan Raúl Acuña <allan...@hotmail.com> escribió:



--
Ing. Douglas Sánchez Guillén
      Consultor Informatico
Movistar: 505 8759 - 5342
Claro: 505 88495476

Danilo Zuñiga

unread,
Mar 10, 2017, 9:29:44 PM3/10/17
to Comunidad de Visual Foxpro en Español, rafam...@gmail.com
 aqui les dejo el codigo echo en pseInt link:https://mega.nz/#!TI9WhBzL

Luis Maria Guayan

unread,
Mar 11, 2017, 7:36:16 AM3/11/17
to publice...@googlegroups.com

5 AÑOS, 4 MESES Y 8 DIAS ... me da como resultado desde que preguntaron hasta que respondieron :-)

Será que ayer fue viernes ...


Luis María Guayán
Tucumán, Argentina
_______________________________
Comunidad Visual FoxPro en Español
http://comunidadvfp.blogspot.com

El 10/03/17 a las 23:29, Danilo Zuñiga escribió:
Reply all
Reply to author
Forward
0 new messages