Excel e l’errore sul 1900 bisestile: il bug storico che non sparirà

Excel considera il 1900 bisestile per compatibilità con Lotus 1-2-3. Un'anomalia storica che influenza il sistema di date.
Excel e l’errore sul 1900 bisestile: il bug storico che non sparirà

Un comportamento apparentemente anomalo in Microsoft Excel continua a esistere anche nelle versioni più recenti: l’applicazione considera il 1900 come anno bisestile, nonostante storicamente non lo sia. La particolarità non è un errore recente, ma una scelta progettuale risalente alle prime versioni del software, mantenuta per garantire compatibilità con sistemi e file legacy.

Excel utilizza un sistema di numerazione seriale per rappresentare le date: ogni giorno corrisponde a un numero intero, a partire da un’origine fissata al 1 gennaio 1900. Questo modello semplifica calcoli e operazioni, ma introduce un problema specifico quando si gestiscono le regole del calendario gregoriano. Secondo tali regole, un anno è bisestile solo se divisibile per 4, ma gli anni secolari devono essere divisibili anche per 400. Il 1900, quindi, non soddisfa questo requisito.

Origine storica del comportamento

La scelta di trattare il 1900 come anno bisestile deriva dalla necessità di mantenere compatibilità con Lotus 1-2-3, uno dei software più importanti degli anni ’80. Questo programma implementava erroneamente il calendario, includendo il 29 febbraio 1900. Quando Microsoft sviluppò Excel, decise di replicare questo comportamento per evitare discrepanze nei fogli di calcolo esistenti.

La decisione ha avuto conseguenze a lungo termine: correggere l’errore avrebbe significato alterare tutte le date successive nel sistema seriale, causando incompatibilità con milioni di file. Per questo motivo, Microsoft ha scelto di preservare il comportamento originale.

Impatto tecnico sul sistema di date

Nel sistema di Excel, il 29 febbraio 1900 esiste come data valida e corrisponde a un valore seriale specifico. Di conseguenza, tutte le date successive risultano spostate di un giorno rispetto al calendario reale per le operazioni che coinvolgono quel periodo.

Dal punto di vista pratico, l’impatto è limitato: riguarda solo date precedenti al 1 marzo 1900. Tuttavia, per applicazioni che gestiscono dati storici o calcoli retrospettivi, questa discrepanza può generare risultati errati.

Il comportamento è legato al cosiddetto date serial system di Excel, che rappresenta le date come numeri progressivi. Qualsiasi modifica a questo sistema comprometterebbe formule, funzioni e riferimenti esistenti, rendendo impossibile una correzione senza effetti collaterali significativi.

Excel offre un sistema alternativo per la gestione delle date, noto come sistema 1904, utilizzato principalmente nelle versioni storiche per macOS. Questo approccio imposta l’origine al 1 gennaio 1904 e non include l’errore relativo al 1900. Tuttavia, introduce uno scarto di 1462 giorni rispetto al sistema standard, rendendo complessa l’interoperabilità tra file.

La scelta del sistema di date deve quindi essere coerente all’interno di un progetto. In ambienti misti, l’uso combinato dei due sistemi può generare discrepanze difficili da individuare.

Perché il comportamento non viene corretto

Microsoft ha confermato che il problema non verrà risolto, proprio per evitare la rottura della compatibilità con documenti esistenti. Anche una modifica apparentemente semplice richiederebbe la revisione di tutte le funzioni che dipendono dalle date, inclusi calcoli finanziari, pianificazioni e modelli complessi.

Dal punto di vista ingegneristico, il costo di una correzione supera i benefici: il bug è noto, documentato e circoscritto, mentre le conseguenze di una modifica sarebbero estese e difficili da gestire.

Ti consigliamo anche

Link copiato negli appunti