Wróć do Bloga
3 min read

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)

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 data zamiast datagodzina. 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.