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: 144 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
Ce que ce calculateur fait
Entrez votre date de naissance et il vous dit exactement quel âge vous avez — en années, mois et jours — de la même façon que vous le diriez à haute voix (« J'ai 33 ans, 4 mois et 5 jours »). Il affiche également le même âge en mois, semaines, jours, heures, minutes et secondes, le jour de la semaine de votre naissance et le temps jusqu'à votre prochain anniversaire.
Laissez le deuxième champ à la date d'aujourd'hui pour votre âge actuel, ou modifiez-le à n'importe quelle date passée ou future pour connaître votre âge à cette date.
La règle qui rend les âges délicats : les mois et les années ne sont pas un nombre fixe de jours. Février compte 28 ou 29 jours ; les autres mois en comptent 30 ou 31. Donc « 1 mois » signifie « le même numéro de jour, un mois plus tard » — non pas « 30 jours ». Ce calculateur suit cette règle de calendrier, c'est pourquoi il peut différer d'un ou deux jours par rapport aux outils qui divisent simplement par 30 ou 365.
Comment votre âge est calculé
L'âge est l'écart entre deux dates. Il y a deux façons honnêtes de mesurer cet écart, et cet outil affiche les deux.
1. Âge calendaire (années, mois, jours). Comptez les années complètes depuis votre anniversaire, puis les mois complets, puis les jours restants :
- Comptez les années complètes depuis la naissance.
- À partir du dernier anniversaire, comptez les mois complets.
- De là, comptez les jours restants.
La partie subtile est l'étape 3 près des limites de mois. Quelqu'un né le 31 janvier, mesuré le 1er mars, a 1 mois et 1 jour — parce que « un mois après le 31 janvier » correspond au 28/29 février (il n'y a pas de 31 février), et le 1er mars est un jour après cela. Ce calculateur se limite à la fin du mois plus court, en correspondant avec la règle largement utilisée dateutil.relativedelta afin que les anniversaires en fin de mois ne produisent jamais un nombre de jours négatif.
2. Temps écoulé total (jours, heures, secondes). Pour les chiffres « votre âge en autres unités », les deux dates sont converties en un nombre de jours complets et multipliées :
Les deux dates sont d'abord fixées à minuit UTC, de sorte que les changements d'heure d'été/hiver ne peuvent pas ajouter ou supprimer une heure et fausser le nombre de jours. Les semaines sont les jours ÷ 7 (arrondi vers le bas) ; les heures, minutes et secondes sont le nombre de jours mis à l'échelle.
Pourquoi ne pas simplement diviser les jours par 365 ? Parce que vous dérieriez. Diviser 7 305 jours par 365 donne 20,01 années ; diviser par 365,25 donne 20,00 — mais aucun ne sait quelles années étaient bissextiles ou quels mois vous avez réellement vécus. Le comptage calendaire est exact ; la division par jours est une approximation. Utilisez l'âge calendaire pour « quel âge ai-je », et le total de jours/semaines pour un travail précis de temps écoulé (synchronisation des médicaments, durées de projet, comptes à rebours des jalons).
Exemple travaillé
Né le 1er janvier 2000, mesuré le 1er janvier 2020 :
| Mesure | Valeur |
|---|---|
| Âge calendaire | 20 ans, 0 mois, 0 jours |
| Jours totaux | 7 305 |
| Semaines totales | 1 043 |
| Jour de la semaine de naissance | Samedi |
Les 7 305 jours = 20 × 365 + 5 jours bissextiles (2000, 2004, 2008, 2012, 2016). Ce seul détail — cinq jours supplémentaires que la plupart des gens oublient — est exactement pourquoi une calculatrice surpasse le calcul mental.
Âge en code
Le même calcul dans chaque langue. Pour l'âge calendaire, préférez une bibliothèque de dates intégrée au calcul manuel — elle connaît déjà les années bissextiles et les longueurs des mois.
1' 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"
61from 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
111function calendarAge(birth, target) {
2 let months = (target.getUTCFullYear() - birth.getUTCFullYear()) * 12
3 + (target.getUTCMonth() - birth.getUTCMonth());
4 const anchor = new Date(Date.UTC(birth.getUTCFullYear(), birth.getUTCMonth() + months, birth.getUTCDate()));
5 if (anchor > target) months--;
6 return { years: Math.floor(months / 12), months: months % 12 };
7}
8
9const birth = new Date(Date.UTC(2000, 0, 1));
10const target = new Date(Date.UTC(2020, 0, 1));
11const totalDays = Math.floor((target - birth) / 86400000); // 7305
121import java.time.LocalDate;
2import java.time.Period;
3import java.time.temporal.ChronoUnit;
4
5LocalDate birth = LocalDate.of(2000, 1, 1);
6LocalDate target = LocalDate.of(2020, 1, 1);
7
8Period age = Period.between(birth, target); // 20y 0m 0d
9long totalDays = ChronoUnit.DAYS.between(birth, target); // 7305
101using System;
2
3var birth = new DateTime(2000, 1, 1);
4var target = new DateTime(2020, 1, 1);
5
6int years = target.Year - birth.Year;
7if (birth.AddYears(years) > target) years--; // not birthday yet
8long totalDays = (target - birth).Days; // 7305
91#include <chrono>
2using namespace std::chrono;
3
4// C++20 calendar types
5sys_days birth = year{2000}/1/1;
6sys_days target = year{2020}/1/1;
7
8auto total_days = (target - birth).count(); // 7305
9years_months_days ymd_diff{birth, target}; // year_month_day arithmetic
101package main
2
3import "time"
4
5func main() {
6 birth := time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)
7 target := time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC)
8 totalDays := int(target.Sub(birth).Hours() / 24) // 7305
9 _ = totalDays
10}
111use chrono::{NaiveDate, Datelike};
2
3let birth = NaiveDate::from_ymd_opt(2000, 1, 1).unwrap();
4let target = NaiveDate::from_ymd_opt(2020, 1, 1).unwrap();
5
6let total_days = (target - birth).num_days(); // 7305
7let years = target.year() - birth.year(); // adjust if birthday not reached
81<?php
2$birth = new DateTime('2000-01-01');
3$target = new DateTime('2020-01-01');
4$diff = $birth->diff($target);
5
6echo "{$diff->y}y {$diff->m}m {$diff->d}d\n"; // 20y 0m 0d
7echo $diff->days; // 7305
81require 'date'
2
3birth = Date.new(2000, 1, 1)
4target = Date.new(2020, 1, 1)
5
6total_days = (target - birth).to_i # 7305
7years = target.year - birth.year
8years -= 1 if birth.next_year(years) > target
91birth <- as.Date("2000-01-01")
2target <- as.Date("2020-01-01")
3
4total_days <- as.integer(target - birth) # 7305
5Questions fréquentes
Quel âge ai-je exactement ? Entrez votre date de naissance et laissez la date cible à aujourd'hui. La calculatrice affiche votre âge en années, mois et jours, et le répète en jours totaux, semaines, heures et secondes.
Pourquoi mon âge diffère-t-il d'une autre calculatrice ? Presque toujours le reste mois/jour. Les outils ne s'accordent pas sur la façon de compter les jours après le dernier mois complet aux limites de mois. Celui-ci se limite au mois le plus court (la convention relativedelta) ; un outil qui divise par 30 différera d'un ou deux jours.
Gère-t-il les années bissextiles et les anniversaires du 29 février ? Oui. Le nombre de jours inclut chaque jour bissextile de la plage, et un anniversaire du 29 février est mesuré par rapport au 28 février / 1er mars les années non-bissextiles sans débordement.
Puis-je calculer l'âge à une date passée ou future ? Oui — définissez le champ « Âge à la date » à n'importe quelle date. Une date future vous dit quel âge vous aurez alors ; une date passée, quel âge vous aviez.
Que se passe-t-il avec les fuseaux horaires ? Les dates sont normalisées à UTC avant le comptage, de sorte que le total du jour entier est stable peu importe où vous êtes ou si le changement d'heure d'été/hiver s'est produit.
Sources
- Python
dateutil—relativedelta(la règle du mois/jour de l'âge calendaire que cet outil suit). - Java Platform —
Period.betweenetChronoUnit.DAYS. - Microsoft Excel — fonction
DATEDIF. - MDN Web Docs —
Date. - Dershowitz, N., & Reingold, E. M. Calendrical Calculations: The Ultimate Edition. Cambridge University Press, 2018.