Torna al Blog
3 min read

Come calcolare l'età in Python (esempi di datetime e dateutil)

Scopri come calcolare l'età dalla data di nascita in Python. Include gli anni completati, l'età a una data specifica e le insidie ​​​​comuni come gli anni bisestili e i fusi orari.

Come calcolare l'età in Python (esempi di datetime e dateutil)

Come calcolare l'età in Python (esempi di datetime e dateutil)

Se hai bisogno di calcolare l'età in Python da una data di nascita, la cosa principale da capire bene è la definizione di età: la maggior parte delle app richiede anni completati (compleanni completi), non solo la differenza tra anni.

1) Anni completati (la definizione sicura)

Restituisce il numero di anni interi dalla data di nascita (DOB). Sottrae 1 se il compleanno non è ancora avvenuto nell'anno corrente.

dalla data di importazione datetime

def anni_età(dob: data, as_of: data | Nessuno = Nessuno) -> int:
    se as_of è Nessuno:
        come_di = data.oggi()
    anni = come_dell'anno - dob.anno
    prima_del.compleanno = (come_del.mese, come_del.giorno) < (data.mese, data.giorno)
    return anni - 1 se prima_compleanno altrimenti anni

print(età_anni(data(2000, 10, 5), data(2026, 2, 26)))

2) Età a una data specifica (non solo oggi)

Molti casi d'uso richiedono una data "a partire da": prezzi dell'assicurazione, controlli di idoneità, interruzione delle scuole, rapporti. La funzione sopra lo supporta già tramite as_of.

3) Output dello stile esatto (anni e mesi)

Se desideri un output del tipo "25 anni 4 mesi", utilizza dateutil.relativedelta (gestisce correttamente la durata dei mesi).

dalla data di importazione datetime
da dateutil.relativedelta importa relativedelta

def age_ym(dob: data, as_of: data | Nessuno = Nessuno):
    se as_of è Nessuno:
        come_di = data.oggi()
    rd = relativodelta(come_di, dob)
    return rd.anni, rd.mesi

print(età_a(data(2000, 10, 5), data(2026, 2, 26)))

4) Insidie ​​comuni (e come evitarle)

  • Compleanni in giorni bisestili: decidi come vuoi trattare il 29 febbraio negli anni non bisestili. Molti sistemi utilizzano il 28 febbraio o l'1 marzo. Il comportamento della biblioteca è importante, quindi testalo.
  • Dateora e fusi orari: per DOB, preferisci data a datetime. Se devi utilizzare datetime, normalizza prima allo stesso fuso orario.
  • DOB futuro o valori mancanti: convalida gli input per evitare età negative o arresti anomali.

Controllo rapido (nessun codice)

Se hai solo bisogno di un risultato veloce, utilizza il calcolatore online: Calcola l'età online.

Guide correlate

Domande frequenti

Perché (oggi.anno - dob.anno) a volte è sbagliato?

Perché ignora se il compleanno è già avvenuto quest'anno. Devi sottrarre 1 prima del compleanno.

Devo utilizzare datetime o data per la data di nascita?

Utilizza la data quando possibile. Il DOB è un giorno di calendario e i fusi orari possono spostare la data e l'ora da un giorno all'altro.