FoxPro/Visual FoxPro - Calculo de edad

 
Vista:

Calculo de edad

Publicado por Alejandro (2 intervenciones) el 19/03/2004 16:42:19
Necesito Mostrar la edad de una persona en años, mese y dias. Tengo los campos de la fecha de nacimiento y la fecha actual.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Calculo de edad

Publicado por Plinio (7841 intervenciones) el 20/03/2004 04:49:32
en esta direccion busca la palabra "Edad"
http://www.premium-soft.com/rincon_del_programador.htm
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Calculo de edad

Publicado por Angel Brito (11 intervenciones) el 20/03/2004 06:21:21
Debes de restar la fecha actual con la fecha nacimiento, y el resultados seran los dias de nacidos, esos dias los dividira entre 365 y tendra el resultado en año 99.9999. Ejemplo

fechanacimiento = 19/12/1972
fechaactual = 20/03/2004
dias = 0
edad = 0

STORE fechaactual - fechanacimiento TO dias
edad = dias/365
y el resultado es igual 31.2712
Donde 31 = años, 271 es meses redondeado que seria igual a 3,
y 1 dias, entonces 31 años, 3 meses y 1 dias, Claro puedes trabajar con menos digitos decimales y sera mas exacto, pero anyway a mi me ha funcionado muy bien.

Angel Brito



Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calculo de edad

Publicado por Vicente (24 intervenciones) el 20/03/2004 20:38:09
Yo uso las siguientes funciones realizando una resta compuesta entre dos fechas

La función DIFFTIME realiza la resta danto el resultado en una cadena que se divide en dias-meses-años.

Formato:
=DIFFTIME(FECHA FINAL, FECHA INICIAL)

La función Edad usa un parametro (1-3) para devolver solamente la edad en días, meses o años descomponiendo la cadena.

=EDAD(CADENA_FECHA,VALOR)
Donde Valor
1 Días
2 Mes
3 Año
La función DayMonth me devuelve los días que tiene un mes en un año especificos
Asi:
Para restar dos Fechas


s = DIFFTIME(DATE(), FECHA_DE_NACIMIENTO)

SI DESEO SOLAMENTE LOS AÑOS

R = EDAD(S,3)

PROCEDURE DIFFTIME
LPARAMETER Date01, Date02
LOCAL mInit,dInit,yInit, mEnd, dEnd,yEnd
LOCAL dNew,mNew,yNew
LOCAL Aux
Aux = SPACE(0)
yInit = YEAR(Date02)
mInit = MONTH(Date02)
dInit = DAY(Date02)

yEnd = YEAR(Date01)
mEnd = MONTH(Date01)
dEnd = DAY(Date01)

IF dEnd < dInit
mEnd = IIF(mEnd > 1,mEnd-1,12)
yEnd = IIF(mEnd = 12,yEnd-1,yEnd)
dEnd = dEnd + DayMonth(mEnd,yEnd)
ENDIF
IF mEnd < mInit
mEnd = mEnd + 12
yEnd = yEnd - 1
ENDIF

dNew = dEnd - dInit
mNew = mEnd - mInit
yNew = yEnd - yInit
Aux = ALLT(STR(dNew))+"-"+ALLT(STR(mNew))+"-"+ALLT(STR(yNew))

RETURN Aux
ENDPROC

PROCEDURE Eda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calculo de edad

Publicado por Vicente (24 intervenciones) el 20/03/2004 20:40:28
Yo uso las siguientes funciones realizando una resta compuesta entre dos fechas

La función DIFFTIME realiza la resta danto el resultado en una cadena que se divide en dias-meses-años.

Formato:
=DIFFTIME(FECHA FINAL, FECHA INICIAL)

La función Edad usa un parametro (1-3) para devolver solamente la edad en días, meses o años descomponiendo la cadena.

=EDAD(CADENA_FECHA,VALOR)
Donde Valor
1 Días
2 Mes
3 Año
La función DayMonth me devuelve los días que tiene un mes en un año especificos
Asi:
Para restar dos Fechas


s = DIFFTIME(DATE(), FECHA_DE_NACIMIENTO)

SI DESEO SOLAMENTE LOS AÑOS

R = EDAD(S,3)

PROCEDURE DIFFTIME
LPARAMETER Date01, Date02
LOCAL mInit,dInit,yInit, mEnd, dEnd,yEnd
LOCAL dNew,mNew,yNew
LOCAL Aux
Aux = SPACE(0)
yInit = YEAR(Date02)
mInit = MONTH(Date02)
dInit = DAY(Date02)

yEnd = YEAR(Date01)
mEnd = MONTH(Date01)
dEnd = DAY(Date01)

IF dEnd < dInit
mEnd = IIF(mEnd > 1,mEnd-1,12)
yEnd = IIF(mEnd = 12,yEnd-1,yEnd)
dEnd = dEnd + DayMonth(mEnd,yEnd)
ENDIF
IF mEnd < mInit
mEnd = mEnd + 12
yEnd = yEnd - 1
ENDIF

dNew = dEnd - dInit
mNew = mEnd - mInit
yNew = yEnd - yInit
Aux = ALLT(STR(dNew))+"-"+ALLT(STR(mNew))+"-"+ALLT(STR(yNew))

%0
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar