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)
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, foretrekker
dateoverdatetime. 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
- Hvordan beregne alder (komplett veiledning)
- Hvordan beregne alder i Excel
- Hvordan beregne alder i JavaScript
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.