Torna al Blog
4 min read

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.

Come calcolare l'età in JavaScript (da DOB a anni, mesi, giorni)

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-GG può 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

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).