Tilbage till Bloggen
3 min read

Sådan beregnes alder i JavaScript (DOB til år, måneder, dage)

Lær praktiske måder at beregne alder ud fra en fødselsdato i JavaScript. Inkluderer nøjagtige år, måneder, dage, en indstilling fra dato og almindelige faldgruber som tidszoner og skudår.

Sådan beregnes alder i JavaScript (DOB til år, måneder, dage)

Hvis du skal beregne en persons alder ud fra en fødselsdato (DOB) i JavaScript, kan du gøre det på et par forskellige måder. Nøglen er at beslutte, hvad du mener med alder:

  • Alder i fuldførte år (mest almindelige)
  • Nøjagtig alder (år, måneder, dage)
  • Alder på en bestemt dato (ikke altid i dag)

1) Beregn alder i fuldførte år (simpelt og korrekt)

Dette er standardmetoden: Træk år fra, og juster, hvis fødselsdagen endnu ikke har fundet sted i år.

funktion ageInYears(dob, asOf = new Date()) {
  const birth = new Date(dob);
  const ref = new Date(asOf);

  lad år = ref.getFullYear() - birth.getFullYear();
  const m = ref.getMonth() - birth.getMonth();

  if (m < 0 || (m === 0 && ref.getDate() < birth.getDate())) {
    år--;
  }

  tilbagevenden år;
}

Eksempel: DOB 2000-02-10 og pr. 2026-02-09 giver 25 (fødselsdag i morgen).

2) Beregn den nøjagtige alder (år, måneder, dage)

Hvis du vil have en nøjagtig opdeling, kan du først beregne år, derefter måneder og derefter dage ved at "låne" fra den foregående måned, når det er nødvendigt.

function exactAge(dob, asOf = new Date()) {
  const birth = new Date(dob);
  const ref = new Date(asOf);

  lad år = ref.getFullYear() - birth.getFullYear();
  lad måneder = ref.getMonth() - birth.getMonth();
  lad dage = ref.getDate() - birth.getDate();

  // Juster dage ved at låne fra den foregående måned
  if (dage < 0) {
    const prevMonth = new Date(ref.getFullYear(), ref.getMonth(), 0); // dag 0 = sidste dag i forrige måned
    dage += prevMonth.getDate();
    måneder--;
  }

  // Tilpas måneder ved at låne fra det foregående år
  if (måneder < 0) {
    måneder += 12;
    år--;
  }

  returnere { år, måneder, dage };
}

Bemærk: Kantsager på månedsdato (som en DOB den 31.) kræver omhyggelig test. Hvis du har brug for noget robust på tværs af alle landestandarder og edge cases, kan du overveje at bruge et gennemtestet datobibliotek.

3) Brug en "fra" dato for alder på en tidligere eller fremtidig dato

Mange apps skal have en alder på en bestemt referencedato (forsikring, berettigelsesregler, skoleårsfrister). Begge funktioner ovenfor accepterer en parameter som, så du kan gøre:

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

Almindelige faldgruber (og hvordan man undgår dem)

  • Tidszoner: parsing ÅÅÅÅ-MM-DD kan opføre sig forskelligt på tværs af miljøer. Hvis du kun bekymrer dig om datoen, skal du bygge datoen i lokal tid: ny dato(år, månedsindeks, dag).
  • Skiddagsfødselsdage: bestemmer din regel for 29. februar for ikke-skudår (28. februar eller 1. marts). Vær konsekvent.
  • Ugyldige input: validerer, at DOB er en rigtig dato og ikke i fremtiden.

Hurtig mulighed: Brug online-alderberegneren

Hvis duhar bare brug for svaret (eller du vil validere din implementering), brug vores gratis lommeregner: Beregn alder online.

Relaterede guider

Ofte stillede spørgsmål

Hvad er den mest nøjagtige måde at beregne alder på?

I de fleste tilfælde er "fuldførte år" (alder i hele år) standarden. Hvis du har brug for en fuldstændig opdeling, skal du først beregne år, derefter måneder, derefter dage, og teste kanttilfælde som månedslængde og skudår.

Hvorfor giver JavaScript nogle gange den forkerte dag for en datostreng?

Fordi ny dato('ÅÅÅÅ-MM-DD') kan tolkes som UTC i nogle miljøer. Hvis du interesserer dig for den lokale kalenderdato, skal du analysere delene og bruge new Date(y, m, d).