Calculer l'age d'une personne à partir de 2 DateTime est une problématique que l'on retrouve souvent en programmation et également en C#.
Voici une solution qui permet de calculer facilement et simplement l'age de quelqu'un en C#.
DateTime now = DateTime.Today;
int age = now.Year - bday.Year;
if (bday > now.AddYears(-age))
age--;
Voilà la solution C# pour calculer l'age d'une personne avec les DateTime.
Les DateTime représente des moments (comme le timestamp), ils peuvent parfois paraitre compliqué à manipuler pour faire des choses simples mais on apprend très vite à les maitriser et à ne plus s'en passer.
Le détails des lignes C# :
C# 1: on initialise un DateTime pour récupérer la date du jour (aujourd'hui) et ne pas avoir à réécrire DateTime.Today dans les lignes suivantes.
C# 2: on calcul un "age" en soustrayant l'année de l'anniversaire à l'année actuelle.
L'age que l'on obtient à ce niveau ne sera pas toujours bon.
Imaginons que nous sommes le 10 mars 2011 et que l'on veuille calculer en C# l'age d'une personne née le 7 juillet 2000
Année actuelle - Année anniversaire = 2011 - 2000 = 11
Alors que la personne n'aura 11 ans que le 7 juillet 2011
La dernière ligne C# est là pour corriger le problème
C# 3: si le jour de l'anniversaire est supérieur (après) la date actuelle moins l'age, on retire 1 an.
Exemple : Le Datetime de l'anniversaire : 7 juillet 2000 est effectivement plus grand que la date actuelle - age = 10 mars 2011 - 11 = 10 mars 2000
07/07/2000 > 10/03/2000 donc on retire 1 an, ce qui nous fait un age de 10 ans.
On peut ensuite faire une fonction qui effectue le calcul de l'age en C# pour nous et qui prend en paramètre un DateTime (la date d'anniversaire).
public int CalculAge(DateTime anniversaire)
{
DateTime now = DateTime.Today;
int age = now.Year - anniversaire.Year;
if (anniversaire > now.AddYears(-age))
age--;
return age;
}