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)
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
dataadatetime. 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
- Come calcolare l'età (guida completa)
- Come calcolare l'età in Excel
- Come calcolare l'età in JavaScript
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.