Je veux que ce programme obtienne l'âge d'une personne. Je veux que cela fasse cela en soustrayant l'anniversaire d'une personne de la date actuelle. Il obtient le mois et la journée à droite mais l'année n'est pas exactement correcte. Par exemple, lorsque j'entre cette date, il dira que la personne a 16 ans. En réalité, ils devraient avoir 15 ans puisque leur 16e anniversaire n'est pas encore arrivé. Comment puis-je résoudre ce problème?
4 Réponses :
from datetime import date
def calculateAge(birthDate):
today = date.today()
age = today.year - birthDate.year - ((today.month, today.day) < (birthDate.month, birthDate.day))
return age
print(calculateAge(date(1997, 1, 8)), "years")
Vous pouvez faire quelque chose comme ça.
Lorsque vous ajoutez 12 au mois, vous devez soustraire 1 de l'année pour compenser depuis 1 an à 12 mois. Vous devriez faire quelque chose de similaire pour la journée aussi.
if month_answer < 1:
month_answer += 12
year_answer -= 1
Vous avez le même problème avec le mois si le jour actuel est inférieur à l'anniversaire. Dans ces cas, il vous suffit de corriger la prochaine unité supérieure. Vous êtes presque arrivé avec la déclaration IF. Maintenant, vous venez d'ajuster l'année et le mois. Une question, cependant. Si le mois en cours a 31 jours, vous devriez ajouter 31 à la journée. Si cela n'a que 30 ou 28 jours, vous devez ajouter 30 ou 28. Y a-t-il un moyen facile d'obtenir le nombre correct de DateTime? P> P>
Le moyen d'obtenir le nombre de jours dans un mois est de créer un datetime code> pour le premier mois suivant i> mois suivant, puis soustraire un timedelta code> de Un jour.
Si le mois et le jour sont non négatifs, alors l'anniversaire de l'événement n'a pas encore eu lieu. Vous pouvez utiliser cela pour corriger l'année.