Comment calculer l'âge en JavaScript (DOB en années, mois, jours)
Découvrez des méthodes pratiques pour calculer l'âge à partir d'une date de naissance en JavaScript. Comprend les années, les mois, les jours exacts, une option de date à compter du jour et les pièges courants tels que les fuseaux horaires et les années bissextiles.
Si vous devez calculer l'âge d'une personne à partir de sa date de naissance (DOB) en JavaScript, vous pouvez le faire de différentes manières. La clé est de décider ce que vous entendez par âge :
- Âge en années révolues (le plus courant)
- Âge exact (années, mois, jours)
- Âge à une date précise (pas toujours aujourd'hui)
1) Calculer l'âge en années révolues (simple et correct)
Il s'agit de l'approche standard : soustrayez les années et ajustez si l'anniversaire n'a pas encore eu lieu cette année.
function ageInYears(dob, asOf = new Date()) {
const naissance = nouvelle date (dob);
const ref = nouvelle Date(asOf);
laissez ans = ref.getFullYear() - Birth.getFullYear();
const m = ref.getMonth() - naissance.getMonth();
if (m < 0 || (m === 0 && ref.getDate() < Birth.getDate())) {
années--;
}
années de retour;
}
Exemple : DOB 2000-02-10 et à partir du 2026-02-09 donne 25 (anniversaire demain).
2) Calculer l'âge exact (années, mois, jours)
Si vous souhaitez une répartition exacte, vous pouvez d'abord calculer les années, puis les mois, puis les jours en « empruntant » au mois précédent si nécessaire.
function exactAge(dob, asOf = new Date()) {
const naissance = nouvelle date (dob);
const ref = nouvelle Date(asOf);
laissez ans = ref.getFullYear() - Birth.getFullYear();
laissez les mois = ref.getMonth() - Birth.getMonth();
let jours = ref.getDate() - Birth.getDate();
// Ajuster les jours en empruntant au mois précédent
si (jours < 0) {
const prevMonth = new Date(ref.getFullYear(), ref.getMonth(), 0); // jour 0 = dernier jour du mois précédent
jours += prevMonth.getDate();
mois--;
}
// Ajuster les mois en empruntant sur l'année précédente
si (mois < 0) {
mois += 12 ;
années--;
}
return { années, mois, jours } ;
}
Remarque : Les cas limites de date du mois (comme une date de naissance le 31) nécessitent des tests minutieux. Si vous avez besoin de quelque chose de robuste dans tous les paramètres régionaux et dans tous les cas extrêmes, envisagez d'utiliser une bibliothèque de dates bien testée.
3) Utilisez une date "à partir de" pour l'âge à une date passée ou future.
De nombreuses applications nécessitent un âge à une date de référence spécifique (assurance, règles d'éligibilité, dates limites de l'année scolaire). Les deux fonctions ci-dessus acceptent un paramètre asOf, vous pouvez donc faire :
ageInYears('1995-06-20', '2030-01-01');
exactAge('1995-06-20', '2030-01-01');
Pièges courants (et comment les éviter)
- Fuseaux horaires : l'analyse de
AAAA-MM-JJpeut se comporter différemment selon les environnements. Si vous ne vous souciez que de la date, créez la date en heure locale :nouvelle date (année, moisIndex, jour). - Anniversaires bissextiles : décidez de votre règle pour le 29 février pour les années non bissextiles (28 février ou 1er mars). Soyez cohérent.
- Entrée non valide : valide que la date de naissance est une date réelle et non future.
Option rapide : utiliser le calculateur d'âge en ligne
Si vousvous avez juste besoin de la réponse (ou vous souhaitez valider votre mise en œuvre), utilisez notre calculateur gratuit : Calculer l'âge en ligne.
Guides associés
- Comment calculer l'âge dans Excel
- Comment calculer l'âge dans Google Sheets
- Parcourir tous les guides de calcul de l'âge
FAQ
Quelle est la manière la plus précise de calculer l'âge ?
Dans la plupart des cas, les « années révolues » (âge en années entières) constituent la norme. Si vous avez besoin d'une ventilation complète, calculez d'abord les années, puis les mois, puis les jours, et testez les cas extrêmes comme la durée des mois et les années bissextiles.
Pourquoi JavaScript indique-t-il parfois un mauvais jour pour une chaîne de date ?
Parce que la nouvelle Date('YYYY-MM-DD') peut être interprétée comme UTC dans certains environnements. Si vous vous souciez de la date du calendrier local, analysez les parties et utilisez new Date(y, m, d).