Visual Basic - Conversion de fechas

Life is soft - evento anual de software empresarial
 
Vista:

Conversion de fechas

Publicado por Cesar (20 intervenciones) el 07/02/2007 00:58:51
Hola amigos del foro, tengo un problema con las fechas; tengo un campo de la fecha de nacimiento y quiero hacer que me de el tiempo que ha vivido la persona; es decir a cuantos años, meses y dias tiene exactamente.
He tratado con: diferencia = datediff("d", fecha de nacimiento, fecha actual)
el año lo saco dividiendo por 365 y tomo el valor entero
años=int(diferencia/365)
los meses y dias son variables por que los meses son de 31, 30, 28 y algunos de 29, eh ahi el problema espero lo comprendan y puedan ayudarme
Gracias
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

RE:Conversion de fechas

Publicado por Marcela (27 intervenciones) el 07/02/2007 05:20:32
Si entendi bien tu problema creeria que podrias calcular los años, meses y dias de la siguiente manera:
Los años cumplidos de la persona lo podrias calcular con la funcion que das pero la variable seria 'a' en vez de 'd'.
Los meses deben ser aquellos trancurrido desde su ultimo cumpleaños hasta la fecha actual, ello lo podes calcular con la misma funcion que planteas, diferencia = datediff("m", fechaUltimoCumpleaño, fecha actual) pero el valor te da en meses.
Los dias deben ser aquellos transcurridos desde del ultimo dia que cumple un mes mas de vida hasta la fecha actual, deberias calcularlo con diferencia = datediff("d", fechaUltimoDiaAniversarioMes, fecha actual) y el valor te da en dias.
De esta manera podrias obtener que una persona tiene 10años, 3meses y 5dias de vida.
Espero que te sirva...
Saludos.
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

RE:Conversion de fechas

Publicado por Cesar (20 intervenciones) el 08/02/2007 01:57:16
Te agradezco mucho la idea, fue perfecto aunque hice algunas mascaras para sacarlo, a lo mejor no es lo ideal pero funcionó, te envio el codigo de como quedo para que lo cheques, Gracias...

Private Sub CmdCalculo_Click()
Dim Años As Double
Dim Meses As Double
Dim Dias As Double
Dim Fecha_Mes As Date

Años = Int(DateDiff("d", TxtNacimiento.Text, TxtHoy.Text) / 365)
Fecha_Mes = Mid(TxtNacimiento.Text, 1, 6) & Mid(TxtHoy.Text, 7, 4)
'verifica si la ultima fecha de cumpleaños paso en el año de la fecha actual
If CLng(Fecha_Mes) > CLng(CDate(TxtHoy.Text)) Then
Fecha_Mes = Mid(TxtNacimiento.Text, 1, 6) & (Mid(TxtHoy.Text, 7, 4) - 1)
End If
Meses = Int(DateDiff("m", Fecha_Mes, TxtHoy.Text))
If Mid(TxtNacimiento.Text, 1, 2) > Mid(TxtHoy.Text, 1, 2) Then
Meses = Meses - 1
Dias = Abs((Mid(TxtNacimiento.Text, 1, 2) - Mid(TxtHoy.Text, 1, 2)) - 30)
Else
Dias = Mid(TxtHoy.Text, 1, 2) - Mid(TxtNacimiento.Text, 1, 2)
End If
LblAños.Caption = Años
LblMeses.Caption = Meses
LblDias.Caption = Dias

End Sub

Para sacar los años, no sale con "yyyy" por que te da el valor entero de la diferencia, por ejemplo sacas la diferencia entre el 31/12/2006 y el 01/01/2007 te da como resultado 1 año cuando solo ha transcurrido un dia.
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

Otra respuesta, más sencillo

Publicado por Y@ahir (19 intervenciones) el 09/02/2007 01:46:03
Aunque ya te contestaron.
Sin necesidad de hacer operaciones por tu cuenta:
Suponiendo que dt1 sea la fecha de nacimiento de la persona y dt2 la fecha actual, lo que quieres te lo da la funcion DateDiff.

Años = DateDiff("yyyy", dt1, dt2)
Meses = DateDiff("m", dt1, dt2)
Dias = DateDiff("d", dt1, dt2)
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