Chiediti perché hai bisogno di una tale variabile in primo luogo.
Molto probabilmente, stai mentendo sui tuoi dati: ogni volta che hai bisogno di una variabile di "fine dei tempi", non ti riferisci alla fine dei tempi effettivi; piuttosto stai esprimendo cose come "non c'è limite superiore per questa data", "questo evento continua indefinitamente" o simili.
La soluzione corretta, quindi, è esprimere questi intenti direttamente invece di fare affidamento su un valore magico: usa tipi di data nullable (dove null
indica "nessuna data di fine impostata"), aggiungi un campo booleano "indefinito", usa un wrapper polimorfico (che può essere una data reale o uno speciale valore "indefinito") o qualunque cosa il tuo linguaggio di programmazione abbia da offrire.
Naturalmente, la soluzione corretta non è sempre fattibile, quindi potresti finire per usare un valore magico dopo tutto, ma quando lo fai, devi decidere su un valore adatto in base al caso, perché quali date fanno e non ha senso dipende dal dominio che stai modellando: se stai memorizzando i timestamp dei log, 01/01/2999 è una ragionevole "fine dei tempi"; le probabilità che la tua applicazione continui a essere utilizzata tra quasi 1000 anni da adesso sono, credo, praticamente zero. Considerazioni simili valgono per le applicazioni di calendario. E se il tuo software gestisse dati scientifici, ad esempio previsioni a lungo termine sul clima terrestre? Quelli potrebbero effettivamente voler guardare mille anni nel futuro. O fai un passo avanti; l'astronomia, un campo in cui è perfettamente normale ragionare in intervalli di tempo molto grandi dell'ordine di miliardi di anni, sia nel percorso che nel futuro. Per quelli, 01/01/2999 è un massimo arbitrario perfettamente ridicolo. OTOH, un sistema di calendario che è in grado di gestire intervalli di dieci trilioni di anni nel futuro non è praticamente pratico per un sistema di monitoraggio degli appuntamenti del dentista, se non altro per la capacità di archiviazione.
In altre parole, non esiste una scelta migliore per un valore errato e arbitrario per definizione. Questo è il motivo per cui è davvero raro vederne uno definito in qualsiasi linguaggio di programmazione; quelli che di solito non lo chiamano "fine dei tempi", ma piuttosto qualcosa come DATE_MAX
(o Date.MAX
), e lo considerano "il valore più grande che può essere memorizzato nel tipo di dati della data", non "la fine dei tempi" o "indefinitamente".