In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

ENTREFECHAS

Foro público de Xailer en español
Responder
PILO
Mensajes: 583
Registrado: Vie Jul 06, 2007 5:18 pm

ENTREFECHAS

Mensaje por PILO »

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
alcisoft
Mensajes: 35
Registrado: Dom Sep 23, 2007 10:43 am

ENTREFECHAS

Mensaje por alcisoft »

Pilo,
xHarbour tiene en sus fuentes las nanfor lib. Las nanfor lib tienen algunas
funciones sobre fechas a nivel de codigo .prg que seguro que hay alguna que
hace eso.... no se de cabeza me acuerdo de FT_Elapsed()
Saludos
PILO escribió en mensaje <4593a055@news.xailer.com>...
>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
>
>
Rolando
Mensajes: 191
Registrado: Lun May 08, 2006 2:10 pm

ENTREFECHAS

Mensaje por Rolando »

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
>
Rolando
Mensajes: 191
Registrado: Lun May 08, 2006 2:10 pm

ENTREFECHAS

Mensaje por Rolando »

Pilo:
no era lo que buscabas ?
"Rolando Sarrailh" <rsarrailh@gmail.com> escribió en el mensaje
news:[email=4593ba72@news.xailer.com...]4593ba72@news.xailer.com...[/email]
> 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
>>
>
>
PILO
Mensajes: 583
Registrado: Vie Jul 06, 2007 5:18 pm

ENTREFECHAS

Mensaje por PILO »

Perdona, con lo que me has mandado y lo e tuilizado pero solo con los dias
Se me olvido responderte, Gracias y Feliz 2007
Responder