Sv Community El Salvador

Soporte y Tecnología => Programación => Mensaje iniciado por: Trance en agosto 31, 2007, 10:47:37 am

Título: Calcular diferencia entre dos fechas [Fox]
Publicado por: Trance en agosto 31, 2007, 10:47:37 am
Código: [Seleccionar]
*-----------------------------------------------------
* FUNCTION Dif_AMD(tdIni, tdFin)
*-----------------------------------------------------
* Calcula la diferencia entre dos fechas en:
* años, meses y días
* Usa la función DiasDelMes()
*-----------------------------------------------------
fecha1 = cTOD('17/09/2002')
fecha2 = CTOD('17/09/2011')

MESSAGEBOX(Dif_amd(fecha1,fecha2))


FUNCTION Dif_AMD(tdIni, tdFin)
  LOCAL ldAux, lnAnio, lnMes, lnDia, lcRet
  *--- Fecha inicial siempre menor
  IF tdIni>tdFin
    ldAux = tdIni
    tdIni = tdFin
    tdFin = ldAux
  ENDIF
  lnAnio = YEAR(tdFin) - YEAR(tdIni)
  ldAux = GOMONTH(tdIni, 12 * lnAnio)
  *--- No cumplio el año aun
  IF ldAux > tdFin
    lnAnio = lnAnio - 1
  ENDIF
  lnMes = MONTH(tdFin) - MONTH(tdIni)
  IF lnMes < 0
    lnMes = lnMes + 12
  ENDIF
  lnDia = DAY(tdFin) - DAY(tdIni)
  IF lnDia < 0
    lnDia = lnDia + DiasDelMes(tdIni)
  ENDIF
  *--- Si el dia es mayor, no cumplio el mes
  IF (DAY(tdFin) < DAY(tdIni))
    IF lnMes = 0
      lnMes = 11
    ELSE
      lnMes = lnMes - 1
    ENDIF
  ENDIF
  *lcRet = ALLTRIM(STR(lnAnio))+ " AÑOS, " + ;
    ALLTRIM(STR(lnMes))+ " MESES Y " + ;
    ALLTRIM(STR(lnDia))+ " DIAS."+;
    ALLTRIM(STR((lnAnio*12+lnmes)))
    **aqui esta para q solo te retorne los meses
    LcRet  = ALLTRIM(STR((lnAnio*12+lnmes)))
  RETURN lcRet
ENDFUNC
*-----------------------------------------------------
* FUNCTION DiasDelMes(dFecha)
*------------------------------------------------
* Retorna los días de un mes. Usada por Dif_AMD
*------------------------------------------------
FUNCTION DiasDelMes(dFecha)
  LOCAL ld
  ld = GOMONTH(dFecha,1)
  RETURN DAY(ld - DAY(ld))
ENDFUNC

Copyleft rcguillen
Título: Re: Calcular diferencia entre dos fechas [Fox]
Publicado por: rcguillen en agosto 31, 2007, 10:49:49 am
Gracias Trance...

Cualquier onda de fox (tengo varios codigos para diferentes cosas) o SQL hay avisan....


Saludos
Título: Re: Calcular diferencia entre dos fechas [Fox]
Publicado por: Ramses en agosto 31, 2007, 10:52:41 am
Buen codigo :thumbsup:, para la coleccion
Título: Re: Calcular diferencia entre dos fechas [Fox]
Publicado por: rcguillen en agosto 31, 2007, 10:54:28 am
Buen codigo :thumbsup:, para la coleccion

y aqui esta Ramses q es la mera mengambrella el V.basic.net
Título: Re: Calcular diferencia entre dos fechas [Fox]
Publicado por: Ramses en agosto 31, 2007, 10:56:52 am
y aqui esta Ramses q es la mera mengambrella el V.basic.net

Jejeje no es para tanto, todavia estoy aprendiendo :D
Título: Re: Calcular diferencia entre dos fechas [Fox]
Publicado por: sicario en agosto 31, 2007, 11:16:57 am
tiene un pequeño Bug ...

con años bisiestos.. toy viendo como lo arreglo
Título: Re: Calcular diferencia entre dos fechas [Fox]
Publicado por: rcguillen en agosto 31, 2007, 11:21:17 am
tiene un pequeño Bug ...

con años bisiestos.. toy viendo como lo arreglo

Excelente Sicario ahi pasas ya el codigo con el fix..
Título: Re: Calcular diferencia entre dos fechas [Fox]
Publicado por: sicario en agosto 31, 2007, 11:30:52 am
fecha1 = cTOD('31/12/2006')
fecha2 = CTOD('28/02/2012')


mira con estas dos fechas... se pela un poquitin..
Título: Re: Calcular diferencia entre dos fechas [Fox]
Publicado por: rcguillen en agosto 31, 2007, 11:37:44 am
fecha1 = cTOD('31/12/2006')
fecha2 = CTOD('28/02/2012')


mira con estas dos fechas... se pela un poquitin..

Sicario a mi me da 61 meses...y asi es porque aun no ha terminado el mes...

deseas q lo incluya aunque no haya terminado el mes osea q si va por el dia 1 q ya lo tome como mes?

siendo asi ya tendrian q ser 62 meses

o como?....
Título: Re: Calcular diferencia entre dos fechas [Fox]
Publicado por: sicario en agosto 31, 2007, 11:55:05 am
jajja guillen ... no es que no ha terminado... lo que pasa es que es febrero.. y es bisiesto.. si me captas?
Título: Re: Calcular diferencia entre dos fechas [Fox]
Publicado por: rcguillen en agosto 31, 2007, 11:59:54 am
jajja guillen ... no es que no ha terminado... lo que pasa es que es febrero.. y es bisiesto.. si me captas?

jaja simon ya vas....bueno seguile buscando ahi..q ahorita aqui anda mi jefe y me quiere dar en  la neck jajajaaj