Leeftijdscalculator — Exacte leeftijd in jaren, maanden & dagen
Gratis leeftijdscalculator: voer je geboortedatum in om je exacte leeftijd in jaren, maanden en dagen te krijgen, plus totale weken, dagen, uren en je volgende verjaardag.
Leeftijdscalculator
Je bent geboren op een Monday
Volgende verjaardag: 127 dagen verweg (je wordt 37)
Je leeftijd in andere eenheden
Voortgang in leven
Je leeftijd tegen een illustratieve spanwijdte van 80 jaar.
Documentatie
Wat is een leeftijdscalculator?
Een leeftijdscalculator bepaalt de exacte tijd tussen twee datums: een geboortedatum en een doeldatum, meestal vandaag. Het resultaat wordt weergegeven in jaren, maanden en dagen, en ook als een doorlopend totaal in maanden, weken, dagen, uren, minuten en seconden. De leeftijd kan ook voor een datum in het verleden of de toekomst worden berekend. Zo wordt zichtbaar hoe oud iemand op die dag was of zal zijn.
Leeftijd berekenen
Leeftijd is het verschil tussen twee kalenderdatums. Er zijn twee correcte manieren om dat verschil te beschrijven, en beide zijn nuttig voor verschillende doeleinden.
Kalenderleeftijd (jaren, maanden, dagen)
Dit is de alledaagse manier waarop mensen hun leeftijd aangeven, bijvoorbeeld: "33 jaar, 4 maanden en 5 dagen oud." De leeftijd wordt in drie stappen bepaald:
- Tel de volledige jaren die sinds de geboortedatum zijn verstreken.
- Tel vanaf de meest recente verjaardag de volledige maanden die zijn verstreken.
- Tel vanaf dat moment de resterende dagen.
Stap 3 wordt lastig aan het einde van een maand, omdat maanden niet allemaal evenveel dagen hebben. Iemand die op 31 januari is geboren en van wie de leeftijd op 1 maart wordt bepaald, is 1 maand en 1 dag oud. Eén maand na 31 januari is het 28 februari (of 29 februari in een schrikkeljaar), omdat er geen 31 februari bestaat. 1 maart is één dag later. Bij deze methode, die soms de regel relativedelta wordt genoemd naar de Python-bibliotheek die de regel bekendheid gaf, wordt de verjaardag op de laatste dag van de kortere maand gezet, zodat het aantal dagen nooit negatief wordt.
Totale verstreken tijd (dagen, uren, seconden)
Voor een precieze berekening van de geleefde tijd worden beide datums omgezet naar één tijdstip en wordt het verschil uitgedrukt in hele dagen:
waarbij d het aantal volledige dagen is, t de doeldatum en b de geboortedatum, elk uitgedrukt als een aantal milliseconden, en de deler het aantal milliseconden in één dag is.
Beide datums worden vóór de aftrekking ingesteld op middernacht UTC (Coordinated Universal Time). Zo wordt voorkomen dat veranderingen naar zomer- of wintertijd een uur toevoegen of verwijderen en het aantal dagen vertekenen. Vanuit het dagtotaal worden weken berekend door het aantal dagen te delen door 7 en naar beneden af te ronden. Uren, minuten en seconden zijn het aantal dagen vermenigvuldigd met respectievelijk 24, 1.440 en 86.400.
Door het totale aantal dagen te delen door 365 of 365,25 ontstaat een benaderde leeftijd in jaren, maar daarbij wordt geen rekening gehouden met welke jaren in die periode schrikkeljaren waren. Kalenderberekening, zoals hierboven beschreven, is exact. Gebruik de kalenderleeftijd voor de vraag "hoe oud ben ik?" Gebruik het totale aantal dagen of weken voor taken waarvoor een precieze verstreken tijd nodig is, zoals het plannen van medicatiedoses of aftellen naar een mijlpaal.
Uitgewerkt voorbeeld
Een persoon die is geboren op 1 januari 2000 en van wie de leeftijd wordt bepaald op 1 januari 2020:
| Maatstaf | Waarde |
|---|---|
| Kalenderleeftijd | 20 jaar, 0 maanden, 0 dagen |
| Totaal aantal maanden | 240 |
| Totaal aantal weken | 1.043 |
| Totaal aantal dagen | 7.305 |
| Totaal aantal uren | 175.320 |
| Totaal aantal minuten | 10.519.200 |
| Totaal aantal seconden | 631.152.000 |
| Geboortedag van de week | zaterdag |
Het totaal van 7.305 dagen is gelijk aan 20 × 365 plus 5 schrikkeldagen, voor de schrikkeljaren 2000, 2004, 2008, 2012 en 2016. Elk van die jaren voegde een 29 februari toe die binnen de periode van 20 jaar valt. Daarom is het aantal dagen hoger dan een eenvoudige berekening van 20 × 365, en kan een handmatige berekening gemakkelijk enkele dagen afwijken.
Formule voor leeftijdsberekening in code
De hierboven beschreven methode voor de kalenderleeftijd kan in de meeste programmeertalen worden geïmplementeerd. Het gebruik van een ingebouwde datum- en tijdbibliotheek is veiliger dan de regels voor schrikkeljaren en maandlengtes zelf te schrijven.
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 waarschuwt dat het argument "md" een negatief getal of een onjuist aantal resterende
dagen kan opleveren rond de grenzen tussen maanden. Daarom komt het deel met de resterende dagen van die formule
niet altijd overeen met de hierboven beschreven begrenzingsregel.
Veelgestelde vragen
Hoe vind ik mijn exacte leeftijd? Voer een geboortedatum in en laat de doeldatum op vandaag staan. Het resultaat geeft de leeftijd in jaren, maanden en dagen, evenals dezelfde leeftijd uitgedrukt in totale dagen, weken, uren en seconden.
Waarom geven twee leeftijdscalculators verschillende antwoorden? Het verschil zit meestal in de manier waarop de resterende dagen rond de grens tussen maanden worden geteld. Een calculator die aan het einde van een maand de datum afkapt op de kortere maand, zoals hierboven beschreven, kan één of twee dagen verschillen van een calculator die de verstreken tijd eenvoudig deelt door 30.
Houdt de berekening rekening met schrikkeljaren? Ja. Het totale aantal dagen omvat elke 29 februari die tussen de twee datums valt. In een jaar zonder een 29 februari wordt de verjaardag van iemand die op een schrikkeldag is geboren geteld als 28 februari, de laatste dag van die maand. Iemand die is geboren op 29 februari 1996 is op 20 februari 2023 26 jaar, 11 maanden en 22 dagen oud, en diens volgende verjaardag valt 8 dagen later, op 28 februari 2023.
Kan de leeftijd worden berekend voor een datum in het verleden of de toekomst? Ja. Als de doeldatum op een datum in de toekomst wordt gezet, wordt weergegeven hoe oud iemand op die dag zal zijn. Als de doeldatum op een datum in het verleden wordt gezet, wordt weergegeven hoe oud die persoon toen was. De geboortedatum zelf mag niet in de toekomst liggen en de doeldatum mag niet vóór de geboortedatum vallen.
Hebben tijdzones invloed op het resultaat? Nee. Beide datums worden vóór het tellen van de dagen omgerekend naar middernacht UTC, zodat het totaal hetzelfde blijft, ongeacht de locatie van de gebruiker of veranderingen naar zomer- en wintertijd.
Waarom wijkt het aantal dagen af van het delen van dagen door 365,25? 365,25 is alleen de gemiddelde lengte van een jaar; deze waarde houdt geen rekening met welke specifieke jaren in de periode schrikkeljaren van 366 dagen waren. Het tellen van hele dagen tussen twee echte kalenderdatums is exact.
Bronnen
- Python
dateutil—relativedelta, de hierboven beschreven regel voor maanden en dagen bij het berekenen van de kalenderleeftijd. - Java Platform —
Period.betweenenChronoUnit.DAYS. - Microsoft Excel — de functie
DATEDIF. - MDN Web Docs —
Date. - Dershowitz, N., & Reingold, E. M. Calendrical Calculations: The Ultimate Edition. Cambridge University Press, 2018.