Pilo:
Esta funcion te devuelven un string con años, meses y dias como para
poner una edad.
Saludos.
FUNCT PONS_EDAD( dFechaIni, dFechaFin )
LOCAL dsmsas, cResp := "", cAnos, cMeses, cDias
if ! empty(dFechaIni)
IIF( dFechaFin == NIL, dFechaFin := DATE(), )
dsmsas = DDMMAA( dFechaFin, dFechaIni )
cAnos := SUBSTR( dsmsas, 5, 3 )
cMeses := SUBSTR( dsmsas, 3, 2 )
cDias := SUBSTR( dsmsas, 1, 2 )
cResp := alltrim( cAnos ) + IIF( VAL(cAnos)==1, " Año, ", " Años, " )
+;
cMeses + IIF( VAL(cMeses)==1, " Mes y ", " Meses y " ) +;
cDias + IIF( VAL(cDias)==1, " Día", " Días" )
endif
RETURN( cResp )
//---------------------------------------------------------- --------------------
STATIC FUNCTION DDMMAA( dFechaFin, dFechaIni )
LOCAL nDifDia, nDifMes, nDifAno, nCantDiaMesAnt, nAno, nMes
//
// Devuelve la diferencia de años meses y dias de Las fechas pasadas
// como parámetros, en un string de 6 posiciones con formato ddmmaa
// dFechaFin - dFechaIniF1
// En el prg se deben sustraer cada uno de ellos....
//
nMes = MONTH( dFechaFin ) - 1
nAno = YEAR( dFechaFin )
nCantDiaMesAnt = IIF( nMes=2, IIF( nAno%4 # 0, 28, 29 ),IIF( nMes=4 .OR.;
nMes=6 .OR. nMes=9 .OR. nMes=11, 30, 31 ) )
nDifDia = DAY( dFechaFin ) - DAY( dFechaIni )
nDifMes = MONTH( dFechaFin ) - MONTH( dFechaIni )
nDifAno = YEAR( dFechaFin ) - YEAR( dFechaIni )
IF nDifMes < 0
nDifAno = nDifAno - 1
nDifMes = MONTH( dFechaFin ) + 12 - MONTH( dFechaIni )
ENDIF
IF nDifDia < 0
IF nDifMes <= 0
nDifMes += 11
nDifAno -= 1
ElSE
nDifMes -= 1
ENDIF
nDifDia = DAY( dFechaFin ) + nCantDiaMesAnt - DAY( dFechaIni )
ENDIF
RETURN( STR( nDifDia, 2 ) + STR( nDifMes, 2 ) + STR( nDifAno, 3 ) )
"PILO" <
srmpilo@hotmail.com> escribió en el mensaje
news:[email=
4593a055@news.xailer.com...]
4593a055@news.xailer.com...[/email]
> Hay alguna funcion que me de los dias, meses y años entre dos fechas
> dadas en Xailer o alguien conoce alguna o como se puede hacer
> Muchas Gracias
>