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.000ZJavaScript 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
Versione italiana pubblicata il 26 settembre 2026.