Tillbake till Bloggen
3 min read

Hvordan beregne alder i Python (eksempler på datotid og dateutil)

Lær hvordan du beregner alder fra fødselsdato i Python. Inkluderer fullførte år, alder fra en bestemt dato og vanlige fallgruver som skuddår og tidssoner.

Hvordan beregne alder i Python (eksempler på datotid og dateutil)

Hvordan beregne alder i Python (eksempler på datotid og dateutil)

Hvis du trenger detberegne alder i Pythonfra en fødselsdato, det viktigste for å få riktig er definisjonen av alder: de fleste apper trengerår fullført(fulle bursdager), ikke bare forskjellen mellom år.

1) Fullførte år (den sikre definisjonen)

Dette returnerer antall hele år siden fødselsdatoen (DOB). Den trekker fra 1 hvis fødselsdagen ikke har skjedd ennå i inneværende år.

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) Alder på en bestemt dato (ikke bare i dag)

Mange brukstilfeller trenger en "per" dato: forsikringspriser, kvalifikasjonskontroller, skoleavbrudd, rapporter. Funksjonen ovenfor støtter den allerede viaas_of.

3) Nøyaktig stilutgang (år og måneder)

Hvis du vil ha utgang som "25 år 4 måneder", brukdateutil.relativedelta(den håndterer månedslengder riktig).

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) Vanlige fallgruver (og hvordan unngå dem)

  • Skuttdag bursdager:bestem hvordan du vil behandle 29. februar i ikke-skuddår. Mange systemer bruker 28. februar eller 1. mars. Bibliotekatferd er viktig, så test det.
  • Dato og tidssoner:for DOB, foretrekkerdateoverdatetime. Hvis du må bruke datetimes, normaliser til samme tidssone først.
  • Fremtidig DOB eller manglende verdier:valider innganger for å unngå negative aldersgrupper eller krasj.

Rask sjekk (ingen kode)

Hvis du bare trenger ett resultat raskt, bruk den elektroniske kalkulatoren:Beregn alder online.

Relaterte guider

FAQ

Hvorfor er (i dag.år - dob.år) feil noen ganger?

For den ser bort fra om bursdagen allerede har skjedd i år. Du må trekke fra 1 før bursdagen.

Bør jeg bruke datetime eller dato for fødselsdato?

Brukdatenår det er mulig. DOB er en kalenderdag, og tidssoner kan skifte dato og klokkeslett på tvers av dager.