Aftur í Blogg
3 min read

Hvernig á að reikna aldur í Python (datetime og dateutil dæmi)

Lærðu hvernig á að reikna aldur út frá fæðingardegi í Python. Inniheldur lokið ár, aldur frá tiltekinni dagsetningu og algengar gildrur eins og hlaupár og tímabelti.

Hvernig á að reikna aldur í Python (datetime og dateutil dæmi)

Hvernig á að reikna aldur í Python (datetime og dateutil dæmi)

Ef þú þarftreikna aldur í Pythonfrá fæðingardegi, aðalatriðið til að fá rétt er skilgreiningin á aldri: flest forrit þurfaárum lokið(fullir afmælisdagar), ekki bara munurinn á milli ára.

1) Árum lokið (örugga skilgreiningin)

Þetta skilar fjölda heilra ára frá fæðingardegi (DOB). Það dregur 1 frá ef afmælið hefur ekki enn átt sér stað á yfirstandandi ári.

from datetime import date

def age_years(dob: date, as_of: date | None = None) -> int:
    if as_of is None:
        as_of = date.today()
    years = as_of.year - dob.year
    before_birthday = (as_of.month, as_of.day) < (dob.month, dob.day)
    return years - 1 if before_birthday else years

print(age_years(date(2000, 10, 5), date(2026, 2, 26)))

2) Aldur frá tiltekinni dagsetningu (ekki bara í dag)

Mörg notkunartilvik þurfa „frá og með“ dagsetningu: tryggingaverð, hæfispróf, skólalok, skýrslur. Aðgerðin hér að ofan styður það nú þegar í gegnumas_of.

3) Nákvæm stílframleiðsla (ár og mánuðir)

Ef þú vilt framleiðsla eins og "25 ár 4 mánuðir", notaðudateutil.relativedelta(hann meðhöndlar mánaðarlengdir rétt).

from datetime import date
from dateutil.relativedelta import relativedelta

def age_ym(dob: date, as_of: date | None = None):
    if as_of is None:
        as_of = date.today()
    rd = relativedelta(as_of, dob)
    return rd.years, rd.months

print(age_ym(date(2000, 10, 5), date(2026, 2, 26)))

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

  • Stökkdagafmæli:ákveðið hvernig þú vilt meðhöndla 29. febrúar á hlaupárum. Mörg kerfi nota 28. febrúar eða 1. mars. Hegðun bókasafns skiptir máli, svo prófaðu það.
  • Dagsetningar og tímabelti:fyrir DOB, frekardateyfirdatetime. Ef þú verður að nota dagsetningartíma, staðlaðu fyrst í sama tímabelti.
  • Framundan DOB eða vantar gildi:sannreyna inntak til að forðast neikvæða aldur eða hrun.

Flýtiskoðun (enginn kóða)

Ef þú þarft bara eina niðurstöðu hratt, notaðu reiknivélina á netinu:Reiknaðu aldur á netinu.

Tengdir leiðsögumenn

Algengar spurningar

Af hverju er (í dag.ár - dob.ár) rangt stundum?

Vegna þess að það lítur fram hjá því hvort afmælið hafi þegar gerst á þessu ári. Þú verður að draga 1 frá fyrir afmælið.

Ætti ég að nota datetime eða dagsetningu fyrir fæðingardag?

Notaðudateþegar mögulegt er. DOB er almanaksdagur og tímabelti geta fært dagsetningartíma yfir daga.