Jak obliczyć wiek w Pythonie (przykłady datetime i dateutil)
Dowiedz się, jak obliczyć wiek na podstawie daty urodzenia w Pythonie. Obejmuje ukończone lata, wiek na określoną datę i typowe pułapki, takie jak lata przestępne i strefy czasowe.
Jak obliczyć wiek w Pythonie (przykłady datetime i dateutil)
Jeśli chcesz obliczyć wiek w Pythonie na podstawie daty urodzenia, najważniejsze jest prawidłowe określenie wieku: większość aplikacji potrzebuje lat ukończonych (pełnych urodzin), a nie tylko różnicy między latami.
1) Ukończone lata (bezpieczna definicja)
Zwraca liczbę pełnych lat od daty urodzenia (DOB). Odejmuje 1, jeśli urodziny jeszcze nie przypadły w bieżącym roku.
od daty i godziny importu
def wiek_lat(dob: data, as_of: data | Brak = Brak) -> int:
jeśli as_of ma wartość Brak:
as_of = data.dzisiaj()
lata = as_of.rok - ur.rok
before_birthday = (jak_miesiąc, jak_dzień) < (dob.miesiąc, dzień.dzień)
zwróć lata - 1, jeśli przed_urodzinami, w przeciwnym razie lata
print(wiek_lata(data(2000, 10, 5), data(2026, 2, 26)))
2) Wiek na określoną datę (nie tylko dzisiaj)
W wielu przypadkach wymagana jest data „na dzień”: ceny ubezpieczeń, kontrole kwalifikowalności, zakończenie zajęć szkolnych, raporty. Powyższa funkcja już ją obsługuje poprzez as_of.
3) Dokładny wynik w stylu (lata i miesiące)
Jeśli chcesz uzyskać wynik typu „25 lat 4 miesiące”, użyj dateutil.relativedelta (poprawnie obsługuje długości miesięcy).
od daty i godziny importu
z dateutil.relativedelta zaimportuj względną delta
def wiek_ym(dob: data, as_of: data | Brak = Brak):
jeśli as_of ma wartość Brak:
as_of = data.dzisiaj()
rd = względna delta(as_of, dob)
zwróć rd.lata, rd.miesiące
print(age_ym(data(2000, 10, 5), data(2026, 2, 26)))
4) Typowe pułapki (i jak ich unikać)
- Urodziny w dzień przestępny: zdecyduj, jak chcesz traktować 29 lutego w latach innych niż przestępne. Wiele systemów używa daty 28 lutego lub 1 marca. Zachowanie biblioteki ma znaczenie, więc przetestuj to.
- Daty i strefy czasowe: dla DOB, preferuj
datazamiastdatagodzina. Jeśli musisz używać daty i godziny, najpierw znormalizuj tę samą strefę czasową. - Przyszły DOB lub brakujące wartości: sprawdź poprawność danych wejściowych, aby uniknąć ujemnych wieku lub awarii.
Szybkie sprawdzenie (bez kodu)
Jeśli potrzebujesz szybko jednego wyniku, skorzystaj z kalkulatora online: Oblicz wiek online.
Powiązane przewodniki
Często zadawane pytania
Dlaczego czasami wartość (dzisiaj.rok - data.rok) jest czasami błędna?
Ponieważ ignoruje to, czy urodziny już się odbyły w tym roku. Przed urodzinami musisz odjąć 1.
Czy jako datę urodzenia powinienem używać daty i godziny?
Jeśli to możliwe, użyj daty. DOB to dzień kalendarzowy, a strefy czasowe mogą zmieniać datę i godzinę w ciągu kolejnych dni.