Last active
May 19, 2023 07:44
-
-
Save Fhernd/26d27f321ef0da4619a7 to your computer and use it in GitHub Desktop.
Cálculo de edad de una persona en C#.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | |
} | |
} | |
} | |
} |
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
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:
Saludos.