none
problema al calcular edad en base a dos fechas RRS feed

  • Pregunta

  • hola verán estoy teniendo problemas al calcular la edad en base a dos fecha 1- inicial y 2 - actual. el problema surge de la siguiente formula.

     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Try
                Dim FN As Date = CDate(TextBox1.Text)
    
                Dim resultado As Integer
                Dim dife As Integer = DateDiff(DateInterval.Day, FN, DateTime.Now.Date)
                resultado = dife / 365
                TextBox2.Text = dife.ToString()
                TextBox3.Text = resultado.ToString()
            Catch ex As Exception
                MessageBox.Show(ex.ToString, "error", MessageBoxButtons.OK, MessageBoxIcon.Stop)
            End Try
        End Sub

    la formula consiste en calcular la diferencia entre la fecha 1 (nacimiento) y fecha Actual (sistema)

    a partir de numero devuelto X días se hace la división por 365 (un año) hasta aquí todo bien, ahora el problema es que cuando se pasa una fracción decimal supongamos 20,51 años el entero de Resultado pasa a ser 21 siendo que aún faltan poco menos de 6 meses para llegar a coincidir mes y día.  y quiero que aun siendo x,99 años no pase a un nuevo entero.

    bueno desde ya gracias y una carnavalazado abrazo :D

    martes, 17 de febrero de 2015 20:39

Respuestas

  • "Ricardo Pacetti" escribió:

    > estoy teniendo problemas al calcular la edad en base
    > a dos fecha 1- inicial y 2 - actual

    Hola, Ricardo:

    Prueba para ver si te es útil la función TotalYears que encontrarás en una respuesta mía existente en la siguiente conversación:

    Problema con DateDiff()

    Un saludo


    Enrique Martínez Montejo
            [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    viernes, 20 de febrero de 2015 7:09
    Moderador

Todas las respuestas

  • Estás dividiendo con el operador equivocado.

    Debes escribir

    resultado = dife \ 365

    De todos modos te darás cuenta de que un año no tiene exactamente 365 días. Con los años tu cuenta va a empezar a fallar en las cercanías de los cumpleaños. Pero esa es otra historia.
    martes, 17 de febrero de 2015 20:49
  • Hola Ricardo,

    ¿Cuál es el objetivo del calculo? ¿La lectura de 20.51 años que significa? ¿No es mejor decir, tiene 20 años, 6 meses y 5 días?

    Esperamos tu feed-back

    martes, 17 de febrero de 2015 21:11
  • Estás dividiendo con el operador equivocado.

    Debes escribir

    resultado = dife \ 365

    De todos modos te darás cuenta de que un año no tiene exactamente 365 días. Con los años tu cuenta va a empezar a fallar en las cercanías de los cumpleaños. Pero esa es otra historia.

    si exactamente estaba probando eso y los maldito años bisiestos primero probé por lo lógico / 365.25 . luego di con el problema de que sigue teniendo margen de error. y creo que sería mejor usar una formula como la que propone Willams (cabe destacar que lo que se graba es solo la Fecha de Nacimiento (Edad es solo para Representativo) ). ahora me pongo a ello haber que pasa.
    martes, 17 de febrero de 2015 21:34
  • "Ricardo Pacetti" escribió:

    > estoy teniendo problemas al calcular la edad en base
    > a dos fecha 1- inicial y 2 - actual

    Hola, Ricardo:

    Prueba para ver si te es útil la función TotalYears que encontrarás en una respuesta mía existente en la siguiente conversación:

    Problema con DateDiff()

    Un saludo


    Enrique Martínez Montejo
            [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    viernes, 20 de febrero de 2015 7:09
    Moderador
  • Recién hoy me metí en el Pc.quedo perfecto, solo que lo use con un DateTimePicker pero quedo perfecto. Muchas Gracias.

    ya lo probé poniendo como fecha el día de mañana 21/02 y que así:

    sábado, 21 de febrero de 2015 0:05