Aftur í Blogg
3 min read

Hvernig á að reikna aldur í JavaScript (DOB í ár, mánuði, daga)

Lærðu hagnýtar leiðir til að reikna aldur út frá fæðingardegi í JavaScript. Inniheldur nákvæm ár, mánuði, daga, valkost frá dagsetningu og algengar gildrur eins og tímabelti og hlaupár.

Hvernig á að reikna aldur í JavaScript (DOB í ár, mánuði, daga)

Ef þú þarft að reikna aldur einstaklings út frá fæðingardegi (DOB) í JavaScript geturðu gert það á nokkra mismunandi vegu. Lykillinn er að ákveða hvað þú átt við með aldur:

  • Aldur í lokuðum árum (algengast)
  • Nákvæmur aldur (ár, mánuðir, dagar)
  • Aldur frá tiltekinni dagsetningu (ekki alltaf í dag)

1) Reiknaðu aldur í fullgerðum árum (einfalt og rétt)

Þetta er staðlaða nálgunin: Dragðu frá ár og leiðréttu ef afmælisdagurinn hefur ekki enn átt sér stað á þessu ári.

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

  láta ár = ref.getFullYear() - birth.getFullYear();
  const m = ref.getMonth() - birth.getMonth();

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

  skilaár;
}

Dæmi: DOB 2000-02-10 og frá og með 2026-02-09 gefur 25 (afmæli á morgun).

2) Reiknaðu nákvæman aldur (ár, mánuðir, dagar)

Ef þú vilt nákvæma sundurliðun geturðu reiknað út ár fyrst, síðan mánuði og síðan daga með því að „taka lán“ frá fyrri mánuði þegar þörf krefur.

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

  láta ár = ref.getFullYear() - birth.getFullYear();
  láta mánuði = ref.getMonth() - birth.getMonth();
  láta daga = ref.getDate() - birth.getDate();

  // Stilltu daga með því að taka lán frá fyrri mánuði
  if (dagar < 0) {
    const prevMonth = new Date(ref.getFullYear(), ref.getMonth(), 0); // dagur 0 = síðasti dagur fyrri mánaðar
    dagar += prevMonth.getDate();
    mánuði--;
  }

  // Aðlaga mánuði með lántökum frá fyrra ári
  if (mánuðir < 0) {
    mánuðir += 12;
    ár--;
  }

  skila { ár, mánuði, dagar };
}

Athugið: Mánaðartilvik (eins og DOB þann 31.) krefjast vandlegrar prófunar. Ef þig vantar eitthvað öflugt á öllum stöðum og jaðartilfellum skaltu íhuga að nota vel prófað dagsetningarsafn.

3) Notaðu „frá og með“ dagsetningu fyrir aldur á fyrri eða framtíðardegi

Mörg forrit þurfa aldur á tilteknum viðmiðunardegi (tryggingar, hæfisreglur, lokatímabil skólaárs). Báðar aðgerðir hér að ofan samþykkja af færibreytu, svo þú getur gert:

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

Algengar gildrur (og hvernig á að forðast þær)

  • Tímabelti: þáttun ÁÁÁÁ-MM-DD getur hegðað sér mismunandi eftir umhverfi. Ef þér er aðeins sama um dagsetninguna skaltu byggja dagsetninguna á staðartíma: new Date(year, monthIndex, day).
  • Stökkdagsafmæli: ákveður regluna þína fyrir 29. febrúar á hlaupárum sem ekki eru hlaupár (28. febrúar eða 1. mars). Vertu stöðugur.
  • Ógild inntak: staðfestir að DOB sé raunveruleg dagsetning en ekki í framtíðinni.

Fljótur valkostur: notaðu aldursreiknivélina á netinu

Ef þúvantar bara svarið (eða þú vilt staðfesta útfærsluna þína), notaðu ókeypis reiknivélina okkar: Reiknaðu aldur á netinu.

Tengdir leiðbeiningar

Algengar spurningar

Hver er nákvæmasta leiðin til að reikna út aldur?

Í flestum tilfellum er „lokið ár“ (aldur í heilum árum) staðallinn. Ef þú þarft heildar sundurliðun skaltu reikna út ár fyrst, síðan mánuði, síðan daga og prófa brún tilvik eins og lengd mánaðar og hlaupár.

Af hverju gefur JavaScript stundum rangan dag fyrir dagsetningarstreng?

Vegna þess að ný dagsetning('ÁÁÁÁ-MM-DD') er hægt að túlka sem UTC í sumum umhverfi. Ef þér er sama um dagsetningu dagbókarinnar á staðnum skaltu flokka hlutana og nota new Date(y, m, d).