Skip to content

Instantly share code, notes, and snippets.

@Fhernd
Last active May 19, 2023 07:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Fhernd/26d27f321ef0da4619a7 to your computer and use it in GitHub Desktop.
Save Fhernd/26d27f321ef0da4619a7 to your computer and use it in GitHub Desktop.
Cálculo de edad de una persona en C#.
using System;
namespace Articulo.Pregunta.P1420
{
public class CalculoEdad
{
public static void Main()
{
Console.WriteLine ("\nLa edad para alguien que haya nacido en 1989/13/1 es: {0} años.\n",
CalcularEdad(DateTime.Parse("1/13/1989")));
}
public static int CalcularEdad(DateTime fechaNacimiento)
{
// Obtiene la fecha actual:
DateTime fechaActual = DateTime.Today;
// Comprueba que la se haya introducido una fecha válida; si
// la fecha de nacimiento es mayor a la fecha actual se muestra mensaje
// de advertencia:
if (fechaNacimiento > fechaActual)
{
Console.WriteLine ("La fecha de nacimiento es mayor que la actual.");
return -1;
}
else
{
int edad = fechaActual.Year - fechaNacimiento.Year;
// Comprueba que el mes de la fecha de nacimiento es mayor
// que el mes de la fecha actual:
if (fechaNacimiento.Month > fechaActual.Month)
{
--edad;
}
return edad;
}
}
}
}
@jutrera
Copy link

jutrera commented Jan 11, 2023

Buen trabajo. Un tip nada más.

El caso de que la fecha de nacimiento sea mayor que la fecha actual es un caso menos probable, por lo que puedes reducir la complejidad ciclomática del código de esta forma:

if (fechaNacimiento <= fechaActual)
{
   int edad = fechaActual.Year - fechaNacimiento.Year;
                
   // Comprueba que el mes de la fecha de nacimiento es mayor 
   // que el mes de la fecha actual:
   if (fechaNacimiento.Month > fechaActual.Month)
   {
      --edad;
   }
                
   return edad;
}

Console.WriteLine ("La fecha de nacimiento es mayor que la actual.");
return -1;

Saludos.

@HastaCs
Copy link

HastaCs commented May 19, 2023

Habria que mirar que el mes y el dia sea mayor a la fecha actual, no solo el mes.
if ((fechaNacimiento.Month > fechaActual.Month) || (fechaNacimiento.Month == fechaActual.Month && fechaNacimiento.Day > fechaActual.Day))

Sino el dia 24 de Enero van a tener la misma edad una persona nacida el dia 2 que el dia 30.
Saludos

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment