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.
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-DDkan 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
- De leeftijd berekenen in Excel
- De leeftijd berekenen in Google Spreadsheets
- Blader door alle handleidingen voor leeftijdsberekeningen
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).