Terug naar Blog
4 min read

Hoe u de leeftijd in JavaScript kunt berekenen (DOB tot jaren, maanden, dagen)

Leer praktische manieren om de leeftijd te berekenen op basis van een geboortedatum in JavaScript. Inclusief exacte jaren, maanden, dagen, een datumoptie en veelvoorkomende valkuilen zoals tijdzones en schrikkeljaren.

Hoe u de leeftijd in JavaScript kunt berekenen (DOB tot jaren, maanden, dagen)

Als je in JavaScript de leeftijd van een persoon moet berekenen op basis van de geboortedatum, kun je dit op een aantal verschillende manieren doen. De sleutel is om te beslissen wat je bedoelt met leeftijd:

  • Leeftijd in voltooide jaren (meest voorkomende)
  • Exacte leeftijd (jaren, maanden, dagen)
  • Leeftijd vanaf een specifieke datum (niet altijd vandaag)

1) Bereken de leeftijd in voltooide jaren (eenvoudig en correct)

Dit is de standaardaanpak: trek jaren af en pas aan als de verjaardag dit jaar nog niet heeft plaatsgevonden.

functie ageInYears(dob, asOf = nieuwe datum()) {
  const geboorte = nieuwe datum (geboortedatum);
  const ref = nieuwe datum (asOf);

  laat jaren = ref.getFullYear() - geboorte.getFullYear();
  const m = ref.getMonth() - geboorte.getMonth();

  if (m < 0 || (m === 0 && ref.getDate() < geboorte.getDate())) {
    jaar--;
  }

  terug jaren;
}

Voorbeeld: Geboren op 10-02-2000 en vanaf 09-02-2026 geeft dit 25 (morgen jarig).

2) Bereken de exacte leeftijd (jaren, maanden, dagen)

Als je een exacte uitsplitsing wilt, kun je eerst jaren, dan maanden en dan dagen berekenen door indien nodig te 'lenen' van de voorgaande maand.

function exactAge(dob, asOf = nieuwe datum()) {
  const geboorte = nieuwe datum (geboortedatum);
  const ref = nieuwe datum (asOf);

  laat jaren = ref.getFullYear() - geboorte.getFullYear();
  laat maanden = ref.getMonth() - geboorte.getMonth();
  laat dagen = ref.getDate() - geboorte.getDate();

  // Pas dagen aan door te lenen van de vorige maand
  als (dagen < 0) {
    const prevMonth = nieuwe datum(ref.getFullYear(), ref.getMonth(), 0); // dag 0 = laatste dag van de vorige maand
    dagen += vorigeMaand.getDate();
    maanden--;
  }

  // Pas maanden aan door te lenen van het voorgaande jaar
  als (maanden < 0) {
    maanden += 12;
    jaar--;
  }

  rendement { jaar, maanden, dagen };
}

Opmerking: Randgevallen met een datum van de maand (zoals een geboortedatum op de 31e) vereisen zorgvuldige tests. Als je iets robuusts nodig hebt voor alle landinstellingen en randgevallen, overweeg dan om een goed geteste datumbibliotheek te gebruiken.

3) Gebruik een 'vanaf'-datum voor de leeftijd in het verleden of in de toekomst

Veel apps hebben een leeftijd nodig op een specifieke referentiedatum (verzekeringen, geschiktheidsregels, einde schooljaar). Beide bovenstaande functies accepteren een parameter asOf, dus je kunt het volgende doen:

ageInYears('20-06-1995', '01-01-2030');
exacteLeeftijd('20-06-1995', '01-01-2030');

Veelvoorkomende valkuilen (en hoe u ze kunt vermijden)

  • Tijdzones: het parseren van JJJJ-MM-DD kan zich verschillend gedragen in verschillende omgevingen. Als je alleen om de datum geeft, bouw dan de datum in lokale tijd: nieuwe datum(jaar, maandindex, dag).
  • Schrikkeldagverjaardagen: bepaal uw regel voor 29 februari over niet-schrikkeljaren (28 februari of 1 maart). Wees consistent.
  • Ongeldige invoer: valideert dat de geboortedatum een echte datum is en niet in de toekomst.

Snelle optie: gebruik de online leeftijdscalculator

Als jijHeeft u alleen het antwoord nodig (of wilt u uw implementatie valideren), gebruik dan onze gratis rekenmachine: Bereken de leeftijd online.

Gerelateerde handleidingen

Veelgestelde vragen

Wat is de meest nauwkeurige manier om de leeftijd te berekenen?

In de meeste gevallen is 'voltooide jaren' (leeftijd in hele jaren) de standaard. Als je een volledig overzicht nodig hebt, bereken dan eerst de jaren, dan de maanden en dan de dagen, en test randgevallen zoals de maandlengte en schrikkeljaren.

Waarom geeft JavaScript soms de verkeerde dag aan voor een datumreeks?

Omdat nieuwe datum('JJJJ-MM-DD') in sommige omgevingen kan worden geïnterpreteerd als UTC. Als de lokale kalenderdatum je interesseert, ontleed je de delen en gebruik je nieuwe datum(y, m, d).