Tillbaka till Bloggen
2 min read

Hur man beräknar ålder i Python (exempel datumtid och datumutil)

Lär dig hur du beräknar ålder från födelsedatum i Python. Inkluderar fullbordade år, ålder från ett specifikt datum och vanliga fallgropar som skottår och tidszoner.

Hur man beräknar ålder i Python (exempel datumtid och datumutil)

Hur man beräknar ålder i Python (exempel på datumtid och datum)

Om du behöver beräkna ålder i Python från ett födelsedatum, är det viktigaste att göra rätt definitionen av ålder: de flesta appar behöver år slutförda (hela födelsedagar), inte bara skillnaden mellan år][].

1) Genomförda år (den säkra definitionen)

Detta returnerar antalet hela år sedan födelsedatumet (DOB). Den subtraherar 1 om födelsedagen inte har inträffat ännu under innevarande år.

från datetime importdatum

def age_years(dob: date, as_of: date | None = None) -> int:
    om as_of är Ingen:
        as_of = date.today()
    år = as_of.year - dob.year
    före_födelsedag = (som_of.month, as_of.day) < (dob.month, dob.day)
    returår - 1 om före_födelsedag annat år

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

2) Ålder från ett visst datum (inte bara idag)

Många användningsfall behöver ett "från" datum: försäkringspriser, behörighetskontroller, skolavbrott, rapporter. Funktionen ovan stöder den redan via från och med.

3) Exakt stilutskrift (år och månader)

Om du vill ha utdata som "25 år 4 månader", använd dateutil.relativedelta (den hanterar månadslängder korrekt).

från datetime importdatum
från dateutil.relativedelta import relativedelta

def age_ym(dob: date, as_of: date | None = None):
    om as_of är Ingen:
        as_of = date.today()
    rd = relativdelta(som_of, dob)
    avkastning rd.år, rd.månader

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

4) Vanliga fallgropar (och hur man undviker dem)

  • skottdagars födelsedagar: bestäm hur du vill behandla den 29 februari under icke skottår. Många system använder 28 februari eller 1 mars. Bibliotekets beteende är viktigt, så testa det.
  • Datum och tidszoner: för DOB, föredrar datum framför datumtid. Om du måste använda datum och tid, normalisera till samma tidszon först.
  • Framtida DOB eller saknade värden: validera indata för att undvika negativa åldrar eller krascher.

Snabbkontroll (ingen kod)

Om du bara behöver ett resultat snabbt, använd onlinekalkylatorn: Beräkna ålder online.

Relaterade guider

Vanliga frågor

Varför är (today.year - dob.year) fel ibland?

För att den ignorerar om födelsedagen redan har inträffat i år. Du måste subtrahera 1 före födelsedagen.

Ska jag använda datumtid eller datum för födelsedatum?

Använd datum när det är möjligt. DOB är en kalenderdag och tidszoner kan flytta datum och tid över dagar.