sábado, 17 de mayo de 2014

Calcular edad exacta (VB.NET)

Aquí les dejo una función que me pidió una persona para calcular la edad exacta de una persona (Años, Meses, Días) ingresado como parámetros la fecha de nacimiento.


Private Function CalcularEdad(ByVal DiaNacimiento As Integer, ByVal MesNacimiento As Integer, ByVal AñoNacimiento As Integer)
        ' SE DEFINEN LAS FECHAS ACTUALES
        Dim AñoActual As Integer = Year(Now)
        Dim MesActual As Integer = Month(Now)
        Dim DiaActual As Integer = Now.Day
        Dim Cumplidos As Boolean = False
        ' SE COMPRUEBA CUANDO FUE EL ULTIMOS CUMPLEAÑOS
        ' FORMULA:
        '   Años cumplidos = (Año del ultimo cumpleaños - Año de nacimiento)
        If (MesNacimiento <= MesActual) Then
            If (DiaNacimiento <= DiaActual) Then
                If (DiaNacimiento = DiaActual and MesNacimiento = MesActual) Then
                    MsgBox("Feliz Cumpleaños!")
                End If
                ' MsgBox("Ya cumplio")
                Cumplidos = True
            End If
        End If

        If (Cumplidos = False) Then
            AñoActual = (AñoActual - 1)
            'MsgBox("Ultimo cumpleaños: " & AñoActual)
        End If
        ' Se realiza la resta de años para definir los años cumplidos
        Dim EdadAños As Integer = (AñoActual - AñoNacimiento)
        ' DEFINICION DE LOS MESES LUEGO DEL ULTIMO CUMPLEAÑOS
        Dim EdadMes As Integer
        If Not (AñoActual = Now.Year) Then
            EdadMes = (12 - MesNacimiento)
            EdadMes = EdadMes + Now.Month
        Else
            EdadMes = Math.Abs(Now.Month - MesNacimiento)
        End If
        'SACAMOS LA CANTIDAD DE DIAS EXACTOS
        Dim EdadDia As Integer = (DiaActual - DiaNacimiento)

        'RETORNAMOS LOS VALORES EN UNA CADENA STRING
        Return ("Ud. tiene exactamente " & EdadAños & " años , " & EdadMes & " meses y " & EdadDia & " dias")


    End Function

Nota: Tener en cuenta que los años cumplidos se sacan con la siguiente formula


 Años cumplidos = (Año del ultimo cumpleaños - Año de nacimiento)

8 comentarios:

  1. SÓLO ABRIA QUE AGREGAR:

    If FechaInicio.Date = FechaTermino.Date Then
    EdadAños = 0
    EdadMes = 0
    EdadDia = 1
    Else
    'todo el resto del algoritmo
    end if

    ResponderEliminar
    Respuestas
    1. Hola Elizalde, gracias por comentar.

      En cuanto a tu aporte; Tecnicamente si las dos fechas son las mismas no tendrias un dia de vida, tendrias 0 dias, tendrias un dia de nacido al dia siguiente de haber nacido (Quizas sea un poco confuso :D) y en cunato al condiconal existe una rutina para en caso de q las dos fechas sean iguales; que es el condicional que te muestra el mensaje de feliz cumpleaños.

      Saludos!

      Eliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  3. NECESITO UN PROGRAMA CASI IGUAL QUE SOLO PONGA LA FECHA DE NACIMINETOS Y ME DIGA CUANTOS AÑOS TIENES DIAS MESES Y SU SIGNO ZODIACAL PORFAVOR NECESITO SU AYUDA EN VISUAL BASIC

    ResponderEliminar
  4. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  5. como calculo la edad actual si tengo su fecha de nacimiento en una public class

    ResponderEliminar

Error al montar disco duro en Linux

¿Te ha ocurrido frecuentemente este error al intentar montar un disco duro en tu sistema Linux? A mi me sucede mucho y note qu...