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à determina il tempo esatto tra due date: una data di nascita e una data obiettivo, di solito quella odierna. Riporta il risultato in anni, mesi e giorni, oltre che come totale progressivo in mesi, settimane, giorni, ore, minuti e secondi. L'età può essere calcolata anche per una data passata o futura, mostrando 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 problematico 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 calcolata il 1 marzo, ha 1 mese e 1 giorno. Un mese dopo il 31 gennaio è il 28 febbraio (o il 29 febbraio in un anno bisestile), poiché non esiste il 31 febbraio. Il 1 marzo è un giorno dopo. Questo metodo, talvolta chiamato regola relativedelta dal nome della libreria Python che lo ha reso popolare, limita la data dell'anniversario all'ultimo giorno del mese più breve, così il conteggio dei giorni non diventa 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:
dove d è il numero di giorni interi, t la data di riferimento e b la data di nascita, ciascuno espresso come numero di millisecondi; il divisore è il numero di millisecondi contenuti in un giorno.
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 di calcolo
Una persona nata il 1 gennaio 2000, con età calcolata il 1 gennaio 2020:
| Misura | Valore |
|---|---|
| Età anagrafica | 20 anni, 0 mesi, 0 giorni |
| Mesi totali | 240 |
| Settimane totali | 1.043 |
| Giorni totali | 7.305 |
| Ore totali | 175.320 |
| Minuti totali | 10.519.200 |
| Secondi totali | 631.152.000 |
| Giorno della settimana di nascita | Sabato |
Il totale di 7.305 giorni equivale a 20 × 365 più 5 giorni bisestili, relativi agli anni bisestili 2000, 2004, 2008, 2012 e 2016. Ciascuno di questi anni ha aggiunto un febbraio di 29 giorni che rientra nell'intervallo di 20 anni. Per questo il conteggio dei giorni è maggiore di un semplice 20 × 365 e calcolarlo a mano può facilmente produrre un errore di alcuni giorni.
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
111const MS_PER_DAY = 86400000;
2
3// Add n months, clamping the day to the target month's last day
4// (31 January + 1 month = 28 February). Date.UTC on its own does not
5// clamp: it would roll that date forward into March.
6function addMonthsUTC(base, n) {
7 const total = base.getUTCMonth() + n;
8 const y = base.getUTCFullYear() + Math.floor(total / 12);
9 const m = ((total % 12) + 12) % 12;
10 const lastDay = new Date(Date.UTC(y, m + 1, 0)).getUTCDate();
11 return Date.UTC(y, m, Math.min(base.getUTCDate(), lastDay));
12}
13
14function calendarAge(birth, target) {
15 let months = (target.getUTCFullYear() - birth.getUTCFullYear()) * 12
16 + (target.getUTCMonth() - birth.getUTCMonth());
17 if (addMonthsUTC(birth, months) > target.getTime()) months -= 1;
18 const anchor = addMonthsUTC(birth, months);
19 return {
20 years: Math.floor(months / 12),
21 months: months % 12,
22 days: Math.floor((target.getTime() - anchor) / MS_PER_DAY),
23 };
24}
25
26const birth = new Date(Date.UTC(2000, 0, 1));
27const target = new Date(Date.UTC(2020, 0, 1));
28
29calendarAge(birth, target); // { years: 20, months: 0, days: 0 }
30Math.floor((target - birth) / MS_PER_DAY); // 7305
311' 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 avverte che l'argomento "md" può restituire un numero negativo o un conteggio dei
giorni errato vicino ai confini dei mesi, quindi la parte dei giorni residui di quella formula non
corrisponde sempre alla regola di limitazione descritta sopra.
Domande frequenti
Come faccio a trovare la mia età esatta? Inserire una data di nascita e lasciare la data obiettivo 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 febbraio di 29 giorni compreso tra le due date. In un anno senza un febbraio di 29 giorni, l'anniversario di una nascita avvenuta in un giorno bisestile viene considerato il 28 febbraio, cioè l'ultimo giorno di quel mese. Una persona nata il 29 febbraio 1996 ha 26 anni, 11 mesi e 22 giorni il 20 febbraio 2023, e il compleanno successivo cade 8 giorni dopo, il 28 febbraio 2023.
È possibile calcolare l'età per una data passata o futura? Sì. Impostare la data obiettivo su una data futura mostra quanti anni avrà una persona quel giorno. Impostarla su una data passata mostra quanti anni aveva. La data di nascita non può essere nel futuro e la data obiettivo non può precedere la data di nascita.
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.
Fonti
- Python
dateutil—relativedelta, la regola del mese e del giorno per l'età anagrafica descritta sopra. - Piattaforma Java —
Period.betweeneChronoUnit.DAYS. - Microsoft Excel — funzione
DATEDIF. - MDN Web Docs —
Date. - Dershowitz, N., e Reingold, E. M. Calendrical Calculations: The Ultimate Edition. Cambridge University Press, 2018.