Come calcolare l'età in JavaScript (da DOB a anni, mesi, giorni)
Impara modi pratici per calcolare l'età da una data di nascita in JavaScript. Include anni esatti, mesi, giorni, un'opzione di data di scadenza e insidie comuni come fusi orari e anni bisestili.
Se hai bisogno di calcolare l'età di una persona a partire da una data di nascita (DOB) in JavaScript, puoi farlo in diversi modi. La chiave è decidere cosa intendi per età:
- Età in anni compiuti (più comune)
- Età esatta (anni, mesi, giorni)
- Età a una data specifica (non sempre oggi)
1) Calcola l'età in anni compiuti (semplice e corretto)
Questo è l'approccio standard: sottrai gli anni e aggiustali se il compleanno non è ancora avvenuto quest'anno.
funzione etàInAnni(dob, asOf = nuova Data()) {
const nascita = nuova data(dob);
const ref = nuova data(asOf);
let anni = ref.getFullYear() - birth.getFullYear();
const m = ref.getMonth() - nascita.getMonth();
if (m < 0 || (m === 0 && ref.getDate() < birth.getDate())) {
anni--;
}
anni di ritorno;
}
Esempio: DOB 2000-02-10 e dal 2026-02-09 dà 25 (compleanno domani).
2) Calcola l'età esatta (anni, mesi, giorni)
Se desideri una suddivisione esatta, puoi calcolare prima gli anni, poi i mesi e infine i giorni "prendendo in prestito" dal mese precedente quando necessario.
funzione esattaEtà(dob, asOf = nuova data()) {
const nascita = nuova data(dob);
const ref = nuova data(asOf);
let anni = ref.getFullYear() - birth.getFullYear();
let mesi = ref.getMonth() - birth.getMonth();
let days = ref.getDate() - birth.getDate();
// Modifica i giorni prendendo in prestito dal mese precedente
se (giorni < 0) {
const prevMonth = new Date(ref.getFullYear(), ref.getMonth(), 0); // giorno 0 = ultimo giorno del mese precedente
giorni += prevMonth.getDate();
mesi--;
}
// Adegua i mesi prendendo in prestito dall'anno precedente
if (mesi < 0) {
mesi += 12;
anni--;
}
return { anni, mesi, giorni };
}
Nota: I casi limite relativi alla data del mese (come una data di nascita il 31) richiedono test accurati. Se hai bisogno di qualcosa di robusto per tutte le impostazioni locali e i casi limite, prendi in considerazione l'utilizzo di una libreria di date ben testata.
3) Utilizza una data "a partire da" per l'età in una data passata o futura
Molte app richiedono l'età a una data di riferimento specifica (assicurazione, regole di idoneità, fine dell'anno scolastico). Entrambe le funzioni sopra accettano un parametro asOf, quindi puoi fare:
etàInAnni('1995-06-20', '2030-01-01');
Etàesatta('20-06-1995', '01-01-2030');
Insidie comuni (e come evitarle)
- Fusi orari: l'analisi
AAAA-MM-GGpuò comportarsi in modo diverso a seconda degli ambienti. Se ti interessa solo la data, crea la data nell'ora locale:new Date(year, MonthIndex, day). - Compleanni in giorni bisestili: decidi la tua regola per il 29 febbraio negli anni non bisestili (28 febbraio o 1 marzo). Sii coerente.
- Input non validi: conferma che la data di nascita è una data reale e non futura.
Opzione rapida: utilizza il calcolatore dell'età online
Se tuti serve solo la risposta (o vuoi convalidare la tua implementazione), utilizza il nostro calcolatore gratuito: Calcola l'età online.
Guide correlate
- Come calcolare l'età in Excel
- Come calcolare l'età in Fogli Google
- Sfoglia tutte le guide per il calcolo dell'età
Domande frequenti
Qual è il modo più accurato per calcolare l'età?
Per la maggior parte dei casi, lo standard è "anni compiuti" (età in anni interi). Se hai bisogno di un'analisi completa, calcola prima gli anni, poi i mesi, quindi i giorni e verifica casi limite come la durata del mese e gli anni bisestili.
Perché JavaScript a volte indica il giorno sbagliato per una stringa di data?
Perché la nuova data('AAAA-MM-GG') può essere interpretata come UTC in alcuni ambienti. Se ti interessa la data del calendario locale, analizza le parti e utilizza new Date(y, m, d).