Con la siguiente función podemos averiguar facilmente, la edad de una persona.public int Edad(DateTime fechaNacimiento)
{
//Obtengo la diferencia en años.
int edad = DateTime.Now.Year - fechaNacimiento.Value.Year;
//Obtengo la fecha de cumpleaños de este año.
DateTime nacimientoAhora = fechaNacimiento.Value.AddYears(edad)
//Le resto un año si la fecha actual es anterior
//al día de nacimiento.
if (DateTime.Now.CompareTo(nacimientoAhora) > 0)
{
edad--;
}
return edad;
}
Espero les sea de utilidad.
Saludos!
13 comentarios:
Gracias!, me sirvio el codigo.
No debiese ser
DateTime.Now.CompareTo(nacimientoAhora) < 0 ?
Excelente publicación Juani lo único que a como dijo anónimo debería de ser.
DateTime.Now.CompareTo(nacimientoAhora) < 0
Es una gran solucion, no se me hubiese ocurrido nunca, gracias :D
TimeSpan a = DateTime.Today.Subtract(fechaNacimiento);
double b = a.Days / 365.25;
edad = Convert.ToInt32(b);
Gracias !
muchas gracias encerio bueno yo asi saque dia mes y año espero les sirva Console.WriteLine("INGRESE EL DIA DE NACIMIENTO");
int dia = int.Parse(Console.ReadLine()); Console.WriteLine("INGRESE EL MES DE NACIMIENTO");
int mes = int.Parse(Console.ReadLine()); Console.WriteLine("INGRESE EL AÑO DE NACIMIENTO");
int anio = int.Parse(Console.ReadLine());
int a = DateTime.Now.Year - anio;
int m = DateTime.Now.Month - mes;
int d = DateTime.Now.Day - dia; Console.WriteLine("UD TIENE: " + a + " años, " + m + " meses, " + d + " días");
Gracias :)
Yo quisiera saber como seria en windows form??
Asi trabaja bien en windows form lo unico que la edad si es 27 anos y tiene 27.5 anos lo cambia a 28 anos.
private void dtp_date_ValueChanged(object sender, EventArgs e)
{
int Age; //esta sera la edad
TimeSpan Diff = DateTime.Today.Subtract(dtp_date.Value);
Age = Convert.ToInt32(Diff.TotalDays / 365.25);
var Ages = Diff.TotalDays / 365.25;
txt_edad.Text = Convert.ToString(Diff.TotalDays / 365.25); aqui esta el txtbox con nombre txt_edad
tbx_age.Text = Age.ToString(); // aqui esta el txtbox con nombre tbx_age
}
Me fue de mas utilidad el código de anónimo, de todas formas gracias a todos.!
con esta función toma en cuenta el mes y dias
public int edad(DateTime fch_naciminto)
{
int year = DateTime.Now.Year - fch_naciminto.Year;
int month = DateTime.Now.Month - fch_naciminto.Month;
int day = DateTime.Now.Day - fch_naciminto.Day;
if(month < 0) {
return year - 1;
} else if(month == 0) {
if(day <= 0) {
return year;
} else {
return year - 1;
}
} else {
return year;
}
}
Hola Buenas tardes, mi nombre es Carlos Parra desde Medellìn Colombia. El primer ejemplo funciona correctamente pero haciendo una modificación de la siguiente forma:
if (DateTime.Now.CompareTo(nacimientoAhora) > 0)
esta linea debe cambiar el signo > por <
esto sería todo.
Saludos!!!
Publicar un comentario