Wie berechne ich das Alter einer Person in Jahren, wenn ein DateTime
ihren Geburtstag darstellt?
Eine leicht zu verstehende und einfache Lösung.
// Save today's date.
var today = DateTime.Today;
// Calculate the age.
var age = today.Year - birthdate.Year;
// Go back to the year the person was born in case of a leap year
if (birthdate.Date > today.AddYears(-age)) age--;
Dies setzt jedoch voraus, dass Sie nach der westlichen Vorstellung von Alter suchen und nicht die ostasiatische Rechnung verwenden.
Eine andere Funktion, nicht von mir, sondern im Internet gefunden und ein wenig verfeinert:
public static int GetAge(DateTime birthDate)
{
DateTime n = DateTime.Now; // To avoid a race condition around midnight
int age = n.Year - birthDate.Year;
if (n.Month < birthDate.Month || (n.Month == birthDate.Month && n.Day < birthDate.Day))
age--;
return age;
}
Nur zwei Dinge, die mir in den Sinn kommen: Was ist mit Leuten aus Ländern, die nicht den gregorianischen Kalender verwenden? DateTime.Now ist in der server-spezifischen Kultur denke ich. Ich habe absolut 0 Wissen über die Arbeit mit asiatischen Kalendern und ich weiß nicht, ob es eine einfache Möglichkeit gibt, Daten zwischen Kalendern zu konvertieren, aber nur für den Fall, dass du dich über diese Chinesen aus dem Jahr 4660 wunderst :-)
Der beste Weg, den ich kenne, ist wegen der Schaltjahre und allem anderen:
DateTime birthDate = new DateTime(2000,3,1);
int age = (int)Math.Floor((DateTime.Now - birthDate).TotalDays / 365.25D);
Hoffentlich hilft das.