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 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
datumframfördatumtid. 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
- Hur man beräknar ålder (komplett guide)
- Hur man beräknar ålder i Excel
- Hur man beräknar ålder i JavaScript
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.