Calculatrice d'âge — Âge exact en années, mois et jours
Calculatrice d'âge gratuite : entrez votre date de naissance pour obtenir votre âge exact en années, mois et jours, plus le nombre total de semaines, jours, heures et votre prochain anniversaire.
Calculatrice d'âge
Vous êtes né(e) un Monday
Prochain anniversaire: 127 jours (vous tournez 37)
Votre âge en autres unités
Progression de la vie
Votre âge par rapport à une période de référence illustrative de 80 ans.
Documentation
Qu’est-ce qu’un calculateur d’âge ?
Un calculateur d’âge trouve la durée exacte entre deux dates : une date de naissance et une date cible, généralement aujourd’hui. Il indique le résultat en années, mois et jours, ainsi que sous forme de total cumulé en mois, semaines, jours, heures, minutes et secondes. L’âge peut également être calculé pour une date passée ou future, ce qui indique l’âge d’une personne à cette date ou l’âge qu’elle aura ce jour-là.
Comment calculer l’âge
L’âge correspond à l’écart entre deux dates du calendrier. Il existe deux façons correctes de décrire cet écart, chacune étant utile selon l’objectif.
Âge calendaire (années, mois, jours)
C’est la façon courante d’indiquer son âge, par exemple « 33 ans, 4 mois et 5 jours ». Il se calcule en trois étapes :
- Compter le nombre d’années entières écoulées depuis la date de naissance.
- À partir du dernier anniversaire, compter le nombre de mois entiers écoulés.
- À partir de cette date, compter les jours restants.
L’étape 3 devient délicate vers la fin d’un mois, car les mois n’ont pas tous le même nombre de jours. Une personne née le 31 janvier, dont l’âge est calculé le 1 mars, a 1 mois et 1 jour. Un mois après le 31 janvier, on arrive au 28 février (ou au 29 février lors d’une année bissextile), puisqu’il n’existe pas de 31 février. Le 1 mars est le jour suivant. Cette méthode, parfois appelée règle relativedelta d’après la bibliothèque Python qui l’a popularisée, ramène la date anniversaire au dernier jour du mois le plus court afin que le décompte des jours ne devienne jamais négatif.
Durée totale écoulée (jours, heures, secondes)
Pour compter précisément la durée vécue, les deux dates sont converties en un même instant, puis la différence est calculée en jours entiers :
où d est le nombre de jours entiers, t la date cible et b la date de naissance, chacun étant exprimé comme un nombre de millisecondes, et le diviseur étant le nombre de millisecondes dans une journée.
Les deux dates sont réglées sur minuit UTC (temps universel coordonné) avant la soustraction. Cela empêche les changements liés à l’heure d’été d’ajouter ou de retirer une heure et de fausser le décompte des jours. À partir du nombre total de jours, le nombre de semaines correspond au nombre de jours divisé par 7, arrondi à l’entier inférieur. Les heures, minutes et secondes correspondent au nombre de jours multiplié par 24, 1 440 et 86 400.
Diviser le nombre total de jours par 365 ou 365,25 donne un âge approximatif en années, mais cette méthode ne tient pas compte des années bissextiles présentes dans l’intervalle. Le calcul calendaire décrit ci-dessus est exact. Il faut utiliser l’âge calendaire pour répondre à la question « quel âge ai-je ? ». Le nombre total de jours ou de semaines convient aux tâches qui exigent une durée écoulée précise, comme le calcul de l’intervalle entre des prises de médicament ou le compte à rebours jusqu’à une échéance.
Exemple détaillé
Une personne née le 1 janvier 2000, dont l’âge est calculé le 1 janvier 2020 :
| Mesure | Valeur |
|---|---|
| Âge calendaire | 20 ans, 0 mois, 0 jours |
| Nombre total de mois | 240 |
| Nombre total de semaines | 1 043 |
| Nombre total de jours | 7 305 |
| Nombre total d’heures | 175 320 |
| Nombre total de minutes | 10 519 200 |
| Nombre total de secondes | 631 152 000 |
| Jour de la semaine de naissance | Samedi |
Le total de 7 305 jours correspond à 20 × 365 plus 5 jours bissextiles, pour les années bissextiles 2000, 2004, 2008, 2012 et 2016. Chacune de ces années a ajouté un 29 février compris dans la période de 20 ans. C’est pourquoi le nombre de jours est supérieur à un simple 20 × 365 et pourquoi un calcul manuel peut facilement comporter une erreur de quelques jours.
Formule de calcul de l’âge en code
La méthode de calcul de l’âge calendaire présentée ci-dessus peut être mise en œuvre dans la plupart des langages de programmation. Il est plus sûr d’utiliser une bibliothèque de gestion des dates intégrée que de programmer manuellement les règles concernant les années bissextiles et la longueur des mois.
1from dateutil.relativedelta import relativedelta
2from datetime import date
3
4birth, target = date(2000, 1, 1), date(2020, 1, 1)
5
6age = relativedelta(target, birth) # calendar age
7print(f"{age.years}y {age.months}m {age.days}d")
8
9total_days = (target - birth).days # total elapsed days
10print(total_days) # 7305
111const MS_PER_DAY = 86400000;
2
3// Add n months, clamping the day to the target month's last day
4// (31 January + 1 month = 28 February). Date.UTC on its own does not
5// clamp: it would roll that date forward into March.
6function addMonthsUTC(base, n) {
7 const total = base.getUTCMonth() + n;
8 const y = base.getUTCFullYear() + Math.floor(total / 12);
9 const m = ((total % 12) + 12) % 12;
10 const lastDay = new Date(Date.UTC(y, m + 1, 0)).getUTCDate();
11 return Date.UTC(y, m, Math.min(base.getUTCDate(), lastDay));
12}
13
14function calendarAge(birth, target) {
15 let months = (target.getUTCFullYear() - birth.getUTCFullYear()) * 12
16 + (target.getUTCMonth() - birth.getUTCMonth());
17 if (addMonthsUTC(birth, months) > target.getTime()) months -= 1;
18 const anchor = addMonthsUTC(birth, months);
19 return {
20 years: Math.floor(months / 12),
21 months: months % 12,
22 days: Math.floor((target.getTime() - anchor) / MS_PER_DAY),
23 };
24}
25
26const birth = new Date(Date.UTC(2000, 0, 1));
27const target = new Date(Date.UTC(2020, 0, 1));
28
29calendarAge(birth, target); // { years: 20, months: 0, days: 0 }
30Math.floor((target - birth) / MS_PER_DAY); // 7305
311' Whole days between two dates (A1 = birth, B1 = target):
2=B1-A1
3
4' Calendar age in complete years / months / leftover days:
5=DATEDIF(A1, B1, "y") & " years, " & DATEDIF(A1, B1, "ym") & " months, " & DATEDIF(A1, B1, "md") & " days"
6Microsoft avertit que l’argument "md" peut renvoyer un nombre négatif ou un nombre de jours erroné
à proximité des limites entre les mois ; la partie correspondant aux jours restants de cette formule ne
concorde donc pas toujours avec la règle de plafonnement ci-dessus.
Foire aux questions
Comment trouver mon âge exact ? Saisissez une date de naissance et laissez la date cible sur aujourd’hui. Le résultat indique l’âge en années, mois et jours, ainsi que le même âge exprimé en jours, semaines, heures et secondes au total.
Pourquoi deux calculateurs d’âge donnent-ils des résultats différents ? La différence vient généralement de la manière dont sont comptés les jours restants près de la limite entre deux mois. Un calculateur qui limite le calcul au mois le plus court en fin de mois, comme décrit ci-dessus, peut différer d’un ou deux jours d’un calculateur qui divise simplement la durée écoulée par 30.
Le calcul tient-il compte des années bissextiles ? Oui. Le nombre total de jours inclut chaque 29 février compris entre les deux dates. Lorsqu’une année ne comporte pas de 29 février, l’anniversaire d’une personne née un jour bissextile est compté le 28 février, dernier jour de ce mois. Une personne née le 29 février 1996 a 26 ans, 11 mois et 22 jours le 20 février 2023, et son prochain anniversaire tombe 8 jours plus tard, le 28 février 2023.
Peut-on calculer l’âge pour une date passée ou future ? Oui. En définissant une date cible future, on obtient l’âge qu’aura la personne ce jour-là. En définissant une date passée, on obtient l’âge qu’elle avait alors. La date de naissance elle-même ne peut pas être située dans le futur, et la date cible ne peut pas être antérieure à la date de naissance.
Les fuseaux horaires influent-ils sur le résultat ? Non. Les deux dates sont converties en minuit UTC avant le calcul du nombre de jours ; le total reste donc identique, quelle que soit la localisation de l’utilisateur ou les changements d’heure saisonniers.
Pourquoi le nombre de jours diffère-t-il d’une division du nombre de jours par 365,25 ? La valeur 365,25 n’est qu’une durée moyenne d’une année ; elle n’indique pas quelles années de l’intervalle sont des années bissextiles de 366 jours. Compter les jours entiers entre deux dates réelles du calendrier est exact.
Sources
- Python
dateutil—relativedelta, règle calendaire des mois et des jours décrite ci-dessus. - Plateforme Java —
Period.betweenetChronoUnit.DAYS. - Microsoft Excel — fonction
DATEDIF. - MDN Web Docs —
Date. - Dershowitz, N. et Reingold, E. M. Calendrical Calculations: The Ultimate Edition. Cambridge University Press, 2018.