Chiediti perché hai bisogno di una variabile del genere in primo luogo.
Molto probabilmente, stai mentendo sui tuoi dati: ogni volta che hai bisogno di una variabile "fine del tempo", non ti stai riferendo alla fine effettiva del tempo; piuttosto stai esprimendo cose come "non esiste limite superiore per questa data", "questo evento continua indefinitamente" o simili.
La soluzione corretta, quindi, è esprimere direttamente questi intenti invece di fare affidamento su un valore magico: usa tipi di date 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 qualsiasi altra cosa il tuo linguaggio di programmazione possa offrire.
Ovviamente, la soluzione corretta non è sempre fattibile, quindi potresti finire con l'usare un valore magico dopotutto, ma quando lo fai, devi decidere un valore adatto per ogni caso, perché quali date fanno e non ha senso dipende dal dominio che stai modellando - se stai memorizzando i timestamp dei log, il 01/01/2999 è una ragionevole "fine del tempo"; le probabilità che la tua applicazione sia ancora utilizzata da quasi 1000 anni sono, a mio avviso, praticamente pari a zero. Considerazioni simili vanno fatte per le applicazioni di calendario. Ma cosa succederebbe se il tuo software gestisse dati scientifici, ad esempio, previsioni a lungo termine sul clima della Terra? Quelli potrebbero in realtà voler guardare mille anni nel futuro. O fai un ulteriore passo avanti; l'astronomia, un campo in cui è perfettamente normale ragionare in tempi molto lunghi dell'ordine di miliardi di anni, sia sul sentiero che sul futuro. Per quelli, 01/01/2999 è un massimo arbitrario perfettamente ridicolo. OTOH, un sistema di calendario che è in grado di gestire i tempi di dieci trilioni di anni nel futuro non è pratico per un sistema di monitoraggio degli appuntamenti dei dentisti, se non altro per la capacità di archiviazione.
In altre parole, non esiste un'unica scelta migliore per un valore che è sbagliato e arbitrario per definizione per cominciare. Questo è il motivo per cui è davvero raro vederne uno definito in qualsiasi linguaggio di programmazione; quelli che di solito non lo chiamano "fine del tempo", ma piuttosto qualcosa come DATE_MAX
(o Date.MAX
), e prendilo per indicare "il più grande valore che può essere memorizzato nel tipo di dati data", non " la fine del tempo "o" indefinitamente ".