Tilbage till Bloggen
3 min read

Sådan beregnes alder i Python (eksempler på datotid og dateutil)

Lær, hvordan du beregner alder ud fra fødselsdato i Python. Inkluderer fuldførte år, alder fra en bestemt dato og almindelige faldgruber som skudår og tidszoner.

Sådan beregnes alder i Python (eksempler på datotid og dateutil)

Sådan beregnes alder i Python (eksempler på datotid og dateutil)

Hvis du har brug for detberegne alder i Pythonfra en fødselsdato er den vigtigste ting at få rigtigt definitionen af ​​alder: de fleste apps har brug forår afsluttet(fulde fødselsdage), ikke kun forskellen mellem år.

1) Gennemførte år (den sikre definition)

Dette returnerer antallet af hele år siden fødselsdatoen (DOB). Den trækker 1 fra, hvis fødselsdagen endnu ikke er fundet i det aktuelle å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 kun i dag)

Mange brugssager har brug for en "fra" dato: forsikringspriser, berettigelsestjek, skoleafbrydelser, rapporter. Ovenstående funktion understøtter det allerede viaas_of.

3) Præcis stiloutput (år og måneder)

Hvis du ønsker output som "25 år 4 måneder", brugdateutil.relativedelta(den håndterer månedslængder korrekt).

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) Almindelige faldgruber (og hvordan man undgår dem)

  • Springdag fødselsdage:beslutte, hvordan du vil behandle den 29. februar i ikke-skudår. Mange systemer bruger 28. februar eller 1. marts. Bibliotekets adfærd betyder noget, så test det.
  • Datotider og tidszoner:for DOB, foretrækkerdateoverdatetime. Hvis du skal bruge dato og klokkeslæt, normaliser først til samme tidszone.
  • Fremtidige DOB eller manglende værdier:valider input for at undgå negative aldersgrupper eller nedbrud.

Hurtig kontrol (ingen kode)

Hvis du bare har brug for et hurtigt resultat, så brug online-beregneren:Beregn alder online.

Relaterede guider

FAQ

Hvorfor er (i dag.år - dob.år) nogle gange forkert?

For den ignorerer, om fødselsdagen allerede er sket i år. Du skal trække 1 fra før fødselsdagen.

Skal jeg bruge datetime eller dato for fødselsdato?

Brugedatenår det er muligt. DOB er en kalenderdag, og tidszoner kan flytte dato og klokkeslæt på tværs af dage.