timestampinfo.fr
Strumenti e documentazione

DOCUMENTAZIONE SUL TEMPO

Il problema dell'anno 2038

Comprendere il limite di un timestamp Unix memorizzato in un intero con segno a 32 bit.

L'ultimo secondo rappresentabile

Un intero con segno a 32 bit può rappresentare al massimo 2,147,483,647. Interpretato come secondi Unix, questo valore corrisponde al 19 gennaio 2038 alle 03:14:07 UTC.

Il primo istante fuori intervallo è il 19 gennaio 2038 alle 03:14:08 UTC, ovvero 2.147.483.648 secondi.

Cosa succede in caso di overflow?

Se un sistema torna al minimo intero con segno, il valore diventa −2.147.483.648, corrispondente al 13 dicembre 1901 alle 20:45:52 UTC. Questo comportamento non è universale: un'applicazione può invece segnalare un errore, saturare il valore o avere un comportamento indefinito, secondo il linguaggio e l'operazione.

new Date(2147483647 * 1000).toISOString();
// 2038-01-19T03:14:07.000Z

new Date(2147483648 * 1000).toISOString();
// 2038-01-19T03:14:08.000Z

JavaScript Date non ha questo limite: non memorizza i secondi in un intero con segno a 32 bit.

Quali sistemi controllare?

  • Applicazioni e librerie che usano ancora date a 32 bit.
  • Formati di file, protocolli e campi di database che impongono questa dimensione.
  • Sistemi embedded e comunicazioni con software obsoleto.

Un processore a 64 bit non corregge un campo di protocollo che rimane a 32 bit. Viceversa, alcune piattaforme a 32 bit supportano un tipo a 64 bit: time_t.

Come preparare una migrazione

Censisci le rappresentazioni delle date, usa tipi adatti alla piattaforma e verifica scrittura, lettura e scambio di valori vicini al limite. Includi date prima del 1970 e dopo il 2038 per individuare conversioni implicite. I meccanismi di compatibilità variano secondo sistema e libreria.

Riferimenti

GNU libc — supporto del tempo a 64 bit · Intervallo delle date JavaScript

Apri il convertitore

Versione italiana pubblicata il 26 settembre 2026.