Cómo Poder Hacer Cálculo Que Indique Años, Meses Y Días Entre Dos Fechas


Ir a la página Anterior  1, 2

Objetivo: Re: Cómo Poder Hacer Cálculo Que Indique Años, Meses Y Días Entre Dos Fechas
Bienvenido wikiuy. Ése es el enfoque básico que indiqué en la primera respuesta. Buena cosa que te sientas tan cómodo el primer día con éste maravilloso invento.

Saludos.

Perfil MP  
Objetivo: Re: Cómo Poder Hacer Cálculo Que Indique Años, Meses Y Días Entre Dos Fechas
Hola Shordi, estuve trabajando con un formulario en donde incluí dos DateBox y un Botón, el código es el siguiente:

Enlace al código

He estado probando y funciona, aunque me falta el manejo de errores en caso de restar negativamente.

Les solicitaría su opinión, ya que al final me puse a arreglar cosas con demasiadas sentencias IF THEN

Gracias amigos.

última edición por kike1965 el Domingo, 08 Noviembre 2015, 17:47; editado 4 veces
Perfil MP  
Objetivo: Re: Cómo Poder Hacer Cálculo Que Indique Años, Meses Y Días Entre Dos Fechas
wikiuy escribió: [Ver mensaje]
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.


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


Espero se entienda saludos


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.

Perfil MP  
Objetivo: Re: Cómo Poder Hacer Cálculo Que Indique Años, Meses Y Días Entre Dos Fechas
Bien está, si bien funciona... pero me da un error de compilación en esta línea:ç

If M <1> DiaFi Then

Supongo que es un error de transcripción.
No le he querido tocar dime cuál era la línea original y veremos si funciona.

Saludos.

Perfil MP  
Objetivo: Re: Cómo Poder Hacer Cálculo Que Indique Años, Meses Y Días Entre Dos Fechas
shordi escribió: [Ver mensaje]
Bien está, si bien funciona... pero me da un error de compilación en esta línea:ç

If M <1> DiaFi Then

Supongo que es un error de transcripción.
No le he querido tocar dime cuál era la línea original y veremos si funciona.

Saludos.


Extraño, lo intenté hacer en dos oportunidades pero cuando le aplico las etiquetas code, me altera el código, así que edité el post y puse un enlace a un pastebin, no obstante aquí lo vuelvo a insertar:

Enlace

Saludos Shordi y ojalá puedas verlo ahora.

última edición por kike1965 el Domingo, 08 Noviembre 2015, 17:51; editado 2 veces
Perfil MP  
Objetivo: Re: Cómo Poder Hacer Cálculo Que Indique Años, Meses Y Días Entre Dos Fechas
Ok. Ahora sí. En el futuro, cuando hagas un proyecto así, de ejemplo, basta con seleccionar en el menú proyecto->crear->Archivo Fuente y te creará un fichero tar.gz con el proyecto. Lo subes anexo al post y listo.

Lo he probado y parece funcionar. Es lo que se llamaba en mis tiempos "código humano", es decir un código que reproduce paso a paso lo que uno haría sobre el papel caso de tenerlo que hacer a mano. Queda largo y algo enrevesado pero como dije antes: bien está lo que bien funciona.

Saludos.

Perfil MP  
Objetivo: Re: Cómo Poder Hacer Cálculo Que Indique Años, Meses Y Días Entre Dos Fechas
Gracias Shordi, efectivamente el código es bastante humano y un poco desordenado

Vale, ahora subo las fuentes.

Cordiales saludos Shordi y muchas gracias.

última edición por jguardon el Lunes, 09 Noviembre 2015, 18:42; editado 1 vez
Perfil MP  
Objetivo: Re: Cómo Poder Hacer Cálculo Que Indique Años, Meses Y Días Entre Dos Fechas
Corregido el archivo fuente anterior, el cálculo de días tenía un error en algunos meses en que daba como resultado un día menos.


amd2-0.0.3.tar.gz
Descripción:  
Descargar
Nombre del archivo: amd2-0.0.3.tar.gz
Tamaño: 5.24 KB
Descargado: 34 veces
amd2-0.0.3.tar.gz
Descripción:  
Descargar
Nombre del archivo: amd2-0.0.3.tar.gz
Tamaño: 5.24 KB
Descargado: 34 veces
amd2-0.0.3.tar.gz
Descripción:  
Descargar
Nombre del archivo: amd2-0.0.3.tar.gz
Tamaño: 5.24 KB
Descargado: 34 veces

Perfil MP  
Ir a la página Anterior  1, 2

Página 2 de 2


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.5444s (PHP: -69% SQL: 169%)
Consultas SQL: 34 - Debug off - GZIP Activado