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)
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ækker
dateoverdatetime. 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
- Sådan beregnes alder (komplet vejledning)
- Sådan beregnes alder i Excel
- Sådan beregnes alder i JavaScript
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.