Hvordan beregne alder i JavaScript (DOB til år, måneder, dager)
Lær praktiske måter å beregne alder fra en fødselsdato i JavaScript. Inkluderer nøyaktige år, måneder, dager, et alternativ til dato og vanlige fallgruver som tidssoner og skuddår.
Hvis du trenger å beregne en persons alder fra en fødselsdato (DOB) i JavaScript, kan du gjøre det på noen forskjellige måter. Nøkkelen er å bestemme hva du mener med alder:
- Alder i fullførte år (mest vanlig)
- Nøyaktig alder (år, måneder, dager)
- Alder på en bestemt dato (ikke alltid i dag)
1) Beregn alder i fullførte år (enkelt og riktig)
Dette er standardtilnærmingen: trekk fra år og juster hvis fødselsdagen ennå ikke har skjedd i år.
funksjon ageInYears(dob, asOf = new Date()) {
const fødsel = ny dato(dob);
const ref = new Date(asOf);
la år = ref.getFullYear() - birth.getFullYear();
const m = ref.getMonth() - birth.getMonth();
if (m < 0 || (m === 0 && ref.getDate() < birth.getDate())) {
år--;
}
retur år;
}
Eksempel: DOB 2000-02-10 og fra og med 2026-02-09 gir 25 (bursdag i morgen).
2) Beregn nøyaktig alder (år, måneder, dager)
Hvis du vil ha en nøyaktig fordeling, kan du beregne år først, deretter måneder og deretter dager ved å "låne" fra forrige måned ved behov.
function exactAge(dob, asOf = new Date()) {
const fødsel = ny dato(dob);
const ref = new Date(asOf);
la år = ref.getFullYear() - birth.getFullYear();
la måneder = ref.getMonth() - birth.getMonth();
la dager = ref.getDate() - birth.getDate();
// Juster dager ved å låne fra forrige måned
if (dager < 0) {
const prevMonth = new Date(ref.getFullYear(), ref.getMonth(), 0); // dag 0 = siste dag i forrige måned
dager += prevMonth.getDate();
måneder--;
}
// Juster måneder ved å låne fra året før
if (måneder < 0) {
måneder += 12;
år--;
}
returner { år, måneder, dager };
}
Merk: Kantsaker fra månedsdato (som en DOB den 31.) krever nøye testing. Hvis du trenger noe robust på tvers av alle lokaliteter og kantsaker, bør du vurdere å bruke et godt testet datobibliotek.
3) Bruk en «per-dato» for alder på en tidligere eller fremtidig dato
Mange apper trenger alder på en bestemt referansedato (forsikring, kvalifikasjonsregler, skoleårsfrister). Begge funksjonene ovenfor godtar en som-parameter, så du kan gjøre:
ageInYears('1995-06-20', '2030-01-01');
exactAge('1995-06-20', '2030-01-01');
Vanlige fallgruver (og hvordan du unngår dem)
- Tidssoner: analysering av
ÅÅÅÅ-MM-DDkan oppføre seg forskjellig på tvers av miljøer. Hvis du bare bryr deg om datoen, bygg datoen i lokal tid:ny dato(år, månedsindeks, dag). - Bursdager med skudddager: bestemmer regelen din for 29. februar for ikke-skuddår (28. februar eller 1. mars). Vær konsekvent.
- Ugyldige inndata: bekrefter at DOB er en reell dato og ikke i fremtiden.
Raskt alternativ: bruk den elektroniske alderskalkulatoren
Hvis dutrenger bare svaret (eller du vil validere implementeringen din), bruk vår gratis kalkulator: Beregn alder online.
Relaterte veiledninger
- Slik beregner du alder i Excel
- Slik beregner du alder i Google Sheets
- Bla gjennom alle aldersberegningsguider
Vanlige spørsmål
Hva er den mest nøyaktige måten å beregne alder på?
For de fleste tilfeller er «fullførte år» (alder i hele år) standarden. Hvis du trenger en fullstendig oversikt, beregn først år, deretter måneder, deretter dager, og test kanttilfeller som månedslengde og skuddår.
Hvorfor gir JavaScript noen ganger feil dag for en datostreng?
Fordi ny dato('ÅÅÅÅ-MM-DD') kan tolkes som UTC i enkelte miljøer. Hvis du bryr deg om den lokale kalenderdatoen, kan du analysere delene og bruke new Date(y, m, d).