CANTIDAD DE MESES Y AÑOS ENTRE 2 FECHAS - RESUELTO

CANTIDAD DE MESES Y AÑOS ENTRE 2 FECHAS - RESUELTO

Postby joseluisysturiz » Mon Sep 12, 2016 9:39 pm

Buen dia, asi como dice el titulo, necesito saber la cantidad de MESES existentes entre 2 fechas, revise algunas funciones de fechas y consegui una pero es la cantidad de dias transcurridos en un periodo o en un año desde 01/01, pero lo que en si busco es saber si tengo 2 fechas la cantidad de AÑOS y MESES entre las 2 fechas si existen años de diferencias, sino solo los MESES, no se si alguien ya tendra algo parecido o si hay funciones nativas que lo hagan, desde ya gracias por sus ayudas y sugerencias, saludos... :shock:
Last edited by joseluisysturiz on Mon Sep 12, 2016 11:20 pm, edited 1 time in total.
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: CANTIDAD DE MESES ENTRE 2 FECHAS

Postby joseluisysturiz » Mon Sep 12, 2016 11:08 pm

Bueno, me hice esta pequeña funcion y hasta lo que revise...hace lo que quiero, aca la dejo por si a alguien le es util o si la puede mejorar o le consigue algun detalle...esta probada a vuelo de pajaro, saludos... :shock:

Code: Select all  Expand view

PROCEDURE calcula_meses_anos( nFchIni, nFchFin, nVarAno, nVarMes, oGetAno, oGetMes )

   LOCAL nMeses := nAnos := 0

* nFchIni -> FCH.INICIAL MENOR
* nFchFin -> FCH.FINAL MAYOR
* nVarAno -> VAR Q GUARDA VALOR EN AÑOS
* nVarMes -> VAR Q GUARDA VALOR EN MESES
* oGetAno -> GET CONTENEDOR VALOR EN AÑOS
* oGetMes -> GET CONTENEDOR VALOR EN AÑOS

   nAnos := Year( nFchFin ) - Year( nFchIni )

/*
SI MES 1RA FCHA ES MAYOR A MES 2DA FCHA LE RESTO A nAnos 1
Y LA CANTIDAD DE MESES SERIAN 12 MENOS MES 1RA FCHA + MES 2DA FCHA

SI MES 1RA FCHA ES MENOR O IGUAL A MES 2DA FCHA, nAnos QUEDA IGUAL
Y MESES SERIAN MES 2DA FCHA - MES 1RA FCHA
*/


   IF Month( nFchIni ) > Month( nFchFin )
      nAnos  := nAnos - 1
      nMeses := ( 12 - Month( nFchIni ) ) + Month( nFchFin )
   ELSE
      nMeses := Month( nFchFin ) - Month( nFchIni )
   ENDIF

   IF Year( nFchIni ) == Year( nFchFin )
      nAnos  := 0
      nMeses := Month( nFchFin ) - Month( nFchIni )
   ENDIF
//
   nVarAno := nAnos
   nVarMes := nMeses

   oGetAno:REFRESH()
   oGetMes:REFRESH()

RETURN
 
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: CANTIDAD DE MESES Y AÑOS ENTRE 2 FECHAS - RESUELTO

Postby J. Ernesto » Tue Sep 20, 2016 3:25 pm

José Luis un buen día.

Tengo lo siguiente:

# include "fivewin.ch"

Function Main ()
Local dfecha1 := ""
Local sEdad := ""
Local sDias := ""

SET DATE TO ANSI
SET CENTURY ON
dFecha1 := DATE ()

DEFINE DIALOG oDlg FROM 000, 000 TO 300, 260 PIXEL ;
TITLE "Edad entre dos fechas"

@ 005, 010 SAY "Fecha de Nacimiento" SIZE 070, 14 PIXEL OF oDlg COLOR nRGB ( 016, 016, 240 ), nRGB ( 240, 240, 240 )

@ 005, 080 DTPICKER odfecha1 VAR dfecha1 SIZE 050, 14 PIXEL OF oDlg COLOR nRGB ( 240, 240, 240 ), nRGB ( 240, 016, 016 ) ;
MESSAGE "Digite la fecha de nacimiento"

@ 020, 010 BUTTON "Calcule" SIZE 030, 014 PIXEL OF oDlg ;
ACTION ( sEdad := DFechas ( dFecha1, "0" ), osEdad:Refresh (),;
sDias := DFechas ( dFecha1, "1" ), osDias:Refresh () )

@ 040, 010 SAY osEdad VAR sEdad SIZE 200, 14 PIXEL OF oDlg COLOR nRGB ( 016, 016, 240 ), nRGB ( 240, 240, 240 )
@ 054, 010 SAY osDias VAR sDias SIZE 200, 14 PIXEL OF oDlg COLOR nRGB ( 016, 016, 240 ), nRGB ( 240, 240, 240 )

ACTIVATE DIALOG oDlg

Return ( NIL )
* -------------------------------------------------------------------------------------------------------------- *

* -------------------------------------------------------------------------------------------------------------- *
Function DFechas ( DA, cViene ) && Calcular una Edad desde una fecha a la actualidad en años.meses.dias
Local nDias, nAnos, nMeses
Local Dias_ano := 365.28
Local Dias_Mes := 30

Default cViene := "0" && 0 := sin días calculados, 1 := con los días calculados

nDias := DATE () - DA && Diferencia de Días entre DATE y una Fecha dada 2013.08.25 - 1957.03.04 := 20628 := 56 años, 5 meses, 3 semanas
nAnos := INT ( nDias / Dias_ano ) && Cuantos años hay entre esos dias de diferencia 56
nDias1 := nDias - ( nAnos * Dias_ano ) && Días sobrantes 132
nMeses := INT ( nDias1 / Dias_Mes ) && Cuantos meses hay en esos días sobrantes
nDias2 := nDias1 - ( nMeses * Dias_Mes ) && Días sobrantes

Return ( IIF ( cViene = "1", TRANSFORM ( nDias, "999,999" ) + " días, ", "" ) + ;
TRANSFORM ( nAnos, "9,999" ) + " años, " + ;
TRANSFORM ( nMeses, "99" ) + " meses, " + ;
TRANSFORM ( nDias2, "99" ) + " días" )
* -------------------------------------------------------------------------------------------------------------- *
*
*
*
*


a ver si te sirve

un saludo
J. Ernesto Pinto Q.
Fivewin 1905 + BCC++ 700 + Harbour 3.20 + LopeEdit 5.8 + UEstudio 26.0
jepsys@hotmail.com, jepsys@gmail.com, jepsys@yahoo.com
User avatar
J. Ernesto
 
Posts: 152
Joined: Tue Feb 03, 2009 10:08 pm
Location: Bogotá D.C. Colombia

Re: CANTIDAD DE MESES Y AÑOS ENTRE 2 FECHAS - RESUELTO

Postby joseluisysturiz » Thu Sep 22, 2016 1:44 am

Ernesto, con la funcion que cree y publique resolvi lo que necesitaba, igual es bueno tener otras opciones, la diferencia con la tuya es que da hasta los dias, la mia solo los años y meses que es lo que necesitaba. igual probare la tuya haber si coincidimos en los valores resultanes, por lo menos en la de años y meses deberiamos coincidir, ya hice muchas pruebas manualmente y han coincididos con los resultados de mi funcion, Igual gracias por tu opcion...saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 65 guests