Calcolatore di Età — Età Esatta in Anni, Mesi e Giorni
Calcolatore di età gratuito: inserisci la tua data di nascita per ottenere la tua età esatta in anni, mesi e giorni, più settimane, giorni, ore totali e il tuo prossimo compleanno.
Calcolatore di Età
Sei nato di Monday
Prossimo compleanno: 127 giorni (compiendo 37)
La tua età in altre unità
Progresso della vita
La tua età rispetto a un intervallo di riferimento illustrativo di 80 anni.
Documentazione
Che cos'è un calcolatore dell'età?
Un calcolatore dell’età trova il tempo esatto trascorso tra due date: una data di nascita e una data di riferimento, di solito oggi. Riporta il risultato in anni, mesi e giorni, e anche come totale progressivo in settimane, giorni, ore, minuti e secondi. L’età può essere calcolata anche per una data passata o futura, e mostra quanti anni aveva o avrà una persona in quel giorno.
Come si calcola l'età
L'età è l'intervallo tra due date del calendario. Esistono due modi corretti per descrivere tale intervallo, ed entrambi sono utili per scopi diversi.
Età anagrafica (anni, mesi, giorni)
È il modo consueto con cui si indica l'età, per esempio «33 anni, 4 mesi e 5 giorni». Si calcola in tre passaggi:
- Contare gli anni interi trascorsi dalla data di nascita.
- Contare, a partire dall'ultimo compleanno, i mesi interi trascorsi.
- Da quel punto, contare i giorni rimanenti.
Il passaggio 3 diventa delicato verso la fine di un mese, perché i mesi non hanno tutti lo stesso numero di giorni. Una persona nata il 31 gennaio, la cui età viene misurata il 1 marzo, ha 1 mese e 1 giorno. Un mese dopo il 31 gennaio cade il 28 febbraio (oppure il 29 febbraio in un anno bisestile), poiché il 31 febbraio non esiste. Il 1 marzo è il giorno successivo. Questo metodo, talvolta chiamato regola relativedelta dal nome della libreria Python che lo ha reso popolare, riporta la data dell’anniversario all’ultimo giorno del mese più breve in modo che il conteggio dei giorni non diventi mai negativo.
Tempo totale trascorso (giorni, ore, secondi)
Per un conteggio preciso del tempo vissuto, entrambe le date vengono convertite in un unico punto nel tempo e la differenza viene calcolata in giorni interi:
giorni = floor((data di riferimento − data di nascita) ÷ 86.400.000 millisecondi)
Prima della sottrazione, entrambe le date vengono impostate alla mezzanotte UTC (Tempo coordinato universale). In questo modo, i cambiamenti dell'ora legale non aggiungono né sottraggono un'ora falsando il conteggio dei giorni. Dal totale dei giorni, le settimane si ottengono dividendo i giorni per 7 e arrotondando per difetto. Le ore, i minuti e i secondi si ottengono moltiplicando il numero di giorni per 24, 1.440 e 86.400.
Dividere il totale dei giorni per 365 o 365,25 dà un'età approssimativa in anni, ma non tiene conto di quali anni dell'intervallo fossero bisestili. Il conteggio secondo il calendario, descritto sopra, è esatto. Usare l'età anagrafica per rispondere alla domanda «quanti anni ho?». Usare il totale dei giorni o delle settimane per le attività che richiedono un tempo trascorso preciso, come stabilire gli intervalli delle dosi di un farmaco o il conto alla rovescia verso una ricorrenza.
Esempio svolto
Una persona nata il 1 gennaio 2000, con età calcolata il 1 gennaio 2020:
| Misura | Valore |
|---|---|
| Età anagrafica | 20 anni, 0 mesi, 0 giorni |
| Giorni totali | 7.305 |
| Settimane totali | 1.043 |
| Giorno della settimana di nascita | Sabato |
Il totale di 7.305 giorni equivale a 20 × 365 più 5 giorni bisestili, per gli anni bisestili 2000, 2004, 2008, 2012 e 2016. Ciascuno di questi anni ha aggiunto un 29 febbraio compreso nell’intervallo di 20 anni. Per questo il numero di giorni è superiore a un semplice 20 × 365, e per questo calcolarlo a mano può facilmente portare a sbagliare di qualche giorno.
Formula per il calcolo dell'età nel codice
Il metodo dell'età anagrafica descritto sopra può essere implementato nella maggior parte dei linguaggi di programmazione. Usare una libreria di date integrata è più sicuro che scrivere manualmente le regole per gli anni bisestili e la durata dei mesi.
1from dateutil.relativedelta import relativedelta
2from datetime import date
3
4birth, target = date(2000, 1, 1), date(2020, 1, 1)
5
6age = relativedelta(target, birth) # calendar age
7print(f"{age.years}y {age.months}m {age.days}d")
8
9total_days = (target - birth).days # total elapsed days
10print(total_days) # 7305
111function addMonthsUTC(d, n) {
2 const total = d.getUTCMonth() + n;
3 const y = d.getUTCFullYear() + Math.floor(total / 12);
4 const m = ((total % 12) + 12) % 12;
5 const lastDay = new Date(Date.UTC(y, m + 1, 0)).getUTCDate();
6 return new Date(Date.UTC(y, m, Math.min(d.getUTCDate(), lastDay))); // clamp to month end
7}
8
9function calendarAge(birth, target) {
10 let months = (target.getUTCFullYear() - birth.getUTCFullYear()) * 12
11 + (target.getUTCMonth() - birth.getUTCMonth());
12 if (addMonthsUTC(birth, months) > target) months--;
13 const days = Math.floor((target - addMonthsUTC(birth, months)) / 86400000);
14 return { years: Math.floor(months / 12), months: months % 12, days };
15}
16
17const totalDays = Math.floor((target - birth) / 86400000); // 7305
181' Whole days between two dates (A1 = birth, B1 = target):
2=B1-A1
3
4' Calendar age in complete years / months / leftover days:
5=DATEDIF(A1, B1, "y") & " years, " & DATEDIF(A1, B1, "ym") & " months, " & DATEDIF(A1, B1, "md") & " days"
6Microsoft sconsiglia l’uso dell’unità «MD» di DATEDIF. Può restituire un numero negativo, uno zero o un risultato impreciso.
Domande frequenti
Come faccio a trovare la mia età esatta? Inserire una data di nascita e lasciare la data di riferimento impostata su oggi. Il risultato mostra l'età in anni, mesi e giorni, oltre alla stessa età espressa come totale di giorni, settimane, ore e secondi.
Perché due calcolatori dell'età danno risultati diversi? Di solito la differenza riguarda il modo in cui vengono conteggiati i giorni residui vicino alla fine di un mese. Un calcolatore che limita la data al mese più breve alla fine del mese, come descritto sopra, può differire di uno o due giorni da uno che si limita a dividere il tempo trascorso per 30.
Il calcolo tiene conto degli anni bisestili? Sì. Il conteggio totale dei giorni include ogni 29 febbraio compreso tra le due date, e una data di nascita del 29 febbraio viene confrontata con il 28 febbraio negli anni non bisestili.
È possibile calcolare l’età per una data passata o futura? Sì. Impostando come data di riferimento una data futura si vede quanti anni avrà una persona in quel giorno. Impostando una data passata si vede quanti anni aveva.
I fusi orari influenzano il risultato? No. Entrambe le date vengono convertite nella mezzanotte UTC prima del conteggio dei giorni, quindi il totale rimane invariato indipendentemente dalla posizione dell'utente o dai cambiamenti dell'ora legale.
Perché il conteggio dei giorni differisce dalla divisione dei giorni per 365,25? 365,25 è soltanto la durata media di un anno; non tiene traccia di quali anni specifici dell'intervallo siano anni bisestili di 366 giorni. Contare i giorni interi tra due date reali del calendario è esatto.
Riferimenti
- dateutil project. relativedelta. Documentazione di dateutil relativedelta — quando un mese aggiunto supererebbe la fine di un mese più breve, si usa l’ultimo giorno di quel mese.
- MDN Web Docs (Mozilla). Date. Riferimento MDN su Date — una data JavaScript è un conteggio di millisecondi dal 1 gennaio 1970 UTC; ±8,64 × 10¹⁵ ms equivalgono a ±100.000.000 giorni, quindi un giorno corrisponde a 86.400.000 ms.
- U.S. Naval Observatory. Leap Years. FAQ dell’USNO sugli anni bisestili — gli anni divisibili per 4 sono bisestili, tranne gli anni secolari non divisibili per 400; il 2000 è un anno bisestile.
- Microsoft. DATEDIF function. Supporto Microsoft: DATEDIF — le unità «Y», «YM» e «MD» e i limiti noti di «MD».