Visual Basic - Calcular edad en años, meses o días con DateTimePicker?

Life is soft - evento anual de software empresarial
 
Vista:
Imágen de perfil de Antonio

Calcular edad en años, meses o días con DateTimePicker?

Publicado por Antonio (4 intervenciones) el 23/04/2015 07:44:13
Buenas,

tengo una pregunta respecto a como calcular edad.

En mi formulario de clientes, necesito especificar la edad de una persona, comparando la fecha ingresada en un DateTimePicker con la fecha actual, ya sea en años, meses o días de nacida y lo muestro en un label...

Tengo este código:

1
2
3
4
5
6
7
8
9
10
11
12
13
'calcular edad  ingresando datos en date time picker
If DateDiff(DateInterval.Day, datetimepickerFechaNacimiento.Value, Now.Date) < 30 Then
    lblEdad.Visible = True
    lblEdad.Text = (DateDiff(DateInterval.Day, datetimepickerFechaNacimiento.Value, Now.Date)) & " día/s"
 
ElseIf 29 < DateDiff(DateInterval.Month, datetimepickerFechaNacimiento.Value, Now.Date) < 365 Then
    lblEdad.Visible = True
    lblEdad.Text = (DateDiff(DateInterval.Month, datetimepickerFechaNacimiento.Value, Now.Date)) & " mes/es"
 
ElseIf DateDiff(DateInterval.Year, datetimepickerFechaNacimiento.Value, Now.Date) > 365 Then
    lblEdad.Visible = True
    lblEdad.Text = (DateDiff(DateInterval.Year, datetimepickerFechaNacimiento.Value, Now.Date)) & " año/s"
End If

El detalle es que solo me muestra los días de nacido, o si son mas de 30 días me muestra 1 mes, 2 meses, 3 meses... Hasta aquí todo va bien. Después de 12 meses, el primero año me lo muestra como 12 meses, 2 años como 24 meses, 3 años como 36 meses...

¿Qué hago o qué tengo que modificar en el código para que me muestre 1 año, 2 años, 3 años, etc, después del mes 12?

Gracias por adelantado!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Calcular edad en años, meses o días con DateTimePicker?

Publicado por Pedro Luis (56 intervenciones) el 23/04/2015 12:24:30
No se si lo he entendido bien pues el banner derecho no me deja leer las lineas enteras.

Nacimiento= cdate("24-08-1963")
?(date()-nacimiento)/365.25 A la fecha de hoy le quito la del nacimiento y se los dias que han pasado
lo divido por los dias que tiene un año y se los años que han pasado
51
51'6632443531828 Los decimales son decimales de años
?0.6632443531828*365.25
242'250000000018 dias trascurridos este año y decimales de dia (horas)
meses=format(cdate("1-1-2015")+242,"dd-mmm-yyyy") si al inicio del año le sumo le sumo los dias tengo una fecha
?meses
31-ago-2015 que es el cumple
?month(cdate(meses))-month(cdate("1-1-2015"))
7 meses trascurridos en el año
Bueno y desde el uno de agosto hasta el 31 han pasado ....

Y si el año tiene 365'25 dias por eso hay alos bisiestos
No es exactamente lo que pides pero es un ejercio de manejo de fechas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Calcular edad en años, meses o días con DateTimePicker?

Publicado por Khristtian (54 intervenciones) el 24/04/2015 15:02:51
Alguna vez hice un algoritmo para eso. Lo buscaré.

Pero .Net te da funciones para eso

Pero la lógica es la siguiente:

Hoy: 23-04-2015
Nacimiento1: 01-01-2000
Nacimiento2: 01-10-2000
Nacimiento3: 01-01-2000
Nacimiento4: 28-10-2000


Como ves, las opciones podrían darse en que el numero de mes sea mayor o menor, lo mismo con el numero del día. (respecto de la fecha actual y de nacimiento), pues el año actual siempre será mayor al del nacimiento (Control de validación para evitar lo contrario)

1.- Creas 6 variable para:
aAct = Le asignas el año actual = 2015
mAct = Le asignas el mes actual = 04
dAct = Le asignas el dia actual = 23

aNac = Le asignas el año de Nac = 2000
mNac = Le asignas el mes de Nac = 1
dNac = Le asignas el dia de Nac = 1

2.- Variables para los resultados:

a = aAct - aNac (15)
m = mAct - mNac (3)
d = dAct - dNac(22)

15 años con 3 meses y 22 días.

Ahora....

Te queda la tarea mas fácil...

Hacer la evaluación e implementar el codigo segun los efectos para cuando mAct sea mayor que mNac, y cuando dAct sea mayor a dNac.


----------------------

Olvidaba algo...

No se puede dividir la cantidad de días de vida de una persona por la cantidad de días de un año, o de meses....

Un sistema debe ser certero y verdadero.

Imagina en un sistema judicial penal... usar esa lógica significa que podrías aplicar una pena beneficiosa o gravosa con un error el calculo de edad.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar