Pergunte a si mesmo por que você precisa dessa variável em primeiro lugar.
Provavelmente, você está mentindo sobre seus dados: sempre que precisar de uma variável "fim do tempo", não estará se referindo ao fim do tempo real; em vez disso, você está expressando coisas como "não há limite superior para esta data", "esse evento continua indefinidamente" ou semelhante.
A solução correta, então, é expressar essas intenções diretamente, em vez de confiar em um valor mágico: use tipos de data anuláveis (onde null
indica "nenhuma data de término definida"), adicione um campo booleano "indefinido", use um invólucro polimórfico (que pode seja uma data real ou um valor "indefinido" especial) ou o que sua linguagem de programação tem a oferecer.
Obviamente, a solução correta nem sempre é viável; portanto, você pode acabar usando um valor mágico, mas quando o fizer, terá que decidir um valor adequado caso a caso, porque quais datas acontecem ou não faz sentido depende do domínio que você está modelando - se você estiver armazenando registros de data e hora do log, 01/01/2999 é um "fim do tempo" razoável; as chances de seu aplicativo ainda ser usado daqui a 1000 anos são, eu diria, praticamente zero. Considerações semelhantes são aplicáveis aos aplicativos de calendário. Mas e se o seu software manipular dados científicos, por exemplo, previsões de longo prazo sobre o clima da Terra? Na verdade, eles podem querer olhar mil anos para o futuro. Ou dê um passo adiante; astronomia, um campo em que é perfeitamente normal raciocinar em períodos muito grandes da ordem de bilhões de anos, tanto no caminho quanto no futuro. Para aqueles, 01/01/2999 é um máximo arbitrário perfeitamente ridículo. OTOH, um sistema de calendário capaz de lidar com o período de tempo de dez trilhões de anos no futuro dificilmente é prático para um sistema de rastreamento de consultas com dentistas, mesmo que apenas por causa da capacidade de armazenamento.
Em outras palavras, não existe uma melhor opção para um valor errado e arbitrário por definição, para começar. É por isso que é realmente incomum ver um definido em qualquer linguagem de programação; aqueles que geralmente não o chamam de "fim dos tempos", mas sim algo como DATE_MAX
(ou Date.MAX
), e consideram "o maior valor que pode ser armazenado no tipo de dados da data", não "o fim dos tempos" ou "indefinidamente".