https://foro.gambas-es.org/viewtopic.php?f=1&t=4967&p=28759#p28759
-----------------------------------
kike1965
Domingo, 08 Noviembre 2015, 16:02

Re: Cómo Poder Hacer Cálculo Que Indique Años, Meses Y Días Entre Dos Fechas
-----------------------------------
[quote user="wikiuy" post="28754"]Buenas a todos.
Pues vi el tema buscando aprender a usar este lenguaje y manipular fechas suele ser muy útil como pesado en ciertas ocasiones.
Hace menos de 24 horas que instale gambas y me puse a experimentar, vale, que sin experimentar nada se aprende.
Vi varios comentarios donde usáis varias funciones de manejo de datos fecha, pero yo como cabeza dura y anticuado probé algo mas rudimentario pero que según mis pruebas da buen resultado y aquí os dejo lo que logre.

[code linenumbers=false syntax=gambas]

Public Sub diferencia(f1 As Date, f2 As Date)
'f1 y f2 las fechas que pasamos a trabajar
    
   Dim  d As Integer
'variable d donde guardamos la cantidad de dias

d = DateDiff(f1, f2, gb.day) - Int(DateDiff(f1,f2,gb.year) / 4) 

'a la cantidad de dias obtenida con DateDiff le resto el resultado entero de la cantidad de años dividido 4, Int(DateDiff(f1,f2,gb.year) / 4) 
'con esto ajustamos el dia extra en los años bisiestos

anios.text = Int(d / 365)
'Anios es años(no me deja nombrar con ñ jaja), calculado a partir del entero de dividir los días entre 365

meses.text = Int(Int(((d / 365) - Int(d / 365)) * 365) / 30)

'Los meses los calculo restando el entero de años de dividir los días entre 365. 
'Al decimal (menor que 1) restante lo multiplico por 30 y de ese resultado filtro la parte decimal para obtener meses enteros.

dias.text = Int((((((d / 365) - Int(d / 365)) * 365) / 30) - Int((((d / 365) - Int(d / 365)) * 365) / 30)) * 30)

'Del mismo modo que para calcular los meses pero esta vez restando los meses enteros y nuevamente al resto menor que 1 lo multiplico por 30 para obtener dias y de ese resultado uso el entero tbn.
End
[/code]

Espero se entienda saludos[/quote]

Hola Wikiuy, gracias por responder.  Estuve probando tu código, pero el día no me da correcto aún, por ejemplo si calculas desde el 01/01/1980 a 08/11/2015 el resultado es 35 años, 10 meses y 12 días, pero debiera ser 35 años, 10 meses y 7 días.

Bueno es cosa de revisar solamente, pero agradezco tu interés.

Cordiales saludos.


