Gitt en DateTime
som representerer en persons fødselsdag, hvordan beregner jeg alderen i år?
En lett forståelig og enkel løsning.
// 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--;
Dette forutsetter imidlertid at du leter etter den vestlige ideen om alder og ikke bruker østasiatisk tidsregning.
En annen funksjon, ikke av meg, men funnet på nettet og raffinert den litt:
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;
}
Bare to ting som kommer inn i tankene mine: Hva med folk fra land som ikke bruker den gregorianske kalenderen? DateTime.Now er i den serverspesifikke kulturen tror jeg. Jeg har absolutt 0 kunnskap om å faktisk jobbe med asiatiske kalendere, og jeg vet ikke om det er en enkel måte å konvertere datoer mellom kalendere, men bare i tilfelle du lurer på de kinesiske gutta fra år 4660 :-)
Den beste måten som jeg vet om på grunn av skuddår og alt er:
DateTime birthDate = new DateTime(2000,3,1);
int age = (int)Math.Floor((DateTime.Now - birthDate).TotalDays / 365.25D);
Håper dette hjelper.