Demandez-vous pourquoi vous avez besoin d'une telle variable en premier lieu.
Vous mentez très probablement sur vos données: chaque fois que vous avez besoin d'une variable de «fin de temps», vous ne faites pas référence à la fin de temps réelle; vous exprimez plutôt des choses comme "il n'y a pas de limite supérieure pour cette date", "cet événement continue indéfiniment", ou similaire.
La bonne solution consiste alors à exprimer ces intentions directement au lieu de s'appuyer sur une valeur magique: utilisez des types de date nullables (où null
indique "pas de date de fin définie"), ajoutez un champ booléen "indéfini", utilisez un wrapper polymorphe (qui peut être une date réelle ou une valeur spéciale "indéfinie"), ou tout ce que votre langage de programmation a à offrir.
Bien sûr, la bonne solution n'est pas toujours faisable, vous pouvez donc finir par utiliser une valeur magique, mais lorsque vous le faites, vous devez décider d'une valeur appropriée au cas par cas, car quelles dates le font et ne le font pas. le sens dépend du domaine que vous modélisez - si vous stockez des horodatages de journal, le 01/01/2999 est une "fin de temps" raisonnable; les chances que votre application soit encore utilisée dans près de 1 000 ans sont, je pense, pratiquement nulles. Des considérations similaires s'appliquent aux applications de calendrier. Mais que se passe-t-il si votre logiciel doit gérer des données scientifiques, disons, des prévisions à long terme sur le climat de la Terre? Ceux-ci pourraient en fait vouloir regarder mille ans dans le futur. Ou allez plus loin; l'astronomie, un domaine où il est parfaitement normal de raisonner sur de très grandes périodes de l'ordre de milliards d'années, à la fois dans le chemin et l'avenir. Pour ceux-là, le 01/01/2999 est un maximum arbitraire parfaitement ridicule. OTOH, un système de calendrier capable de gérer des périodes de dix mille milliards d'années dans le futur, n'est guère pratique pour un système de suivi des rendez-vous chez le dentiste, ne serait-ce qu'en raison de la capacité de stockage.
En d'autres termes, il n'y a pas de meilleur choix pour une valeur incorrecte et arbitraire par définition. C'est pourquoi il est vraiment rare d'en voir un défini dans n'importe quel langage de programmation; ceux qui ne le nomment généralement pas "fin du temps", mais plutôt quelque chose comme DATE_MAX
(ou Date.MAX
), et le prennent pour signifier "la plus grande valeur qui peut être stockée dans le type de données date", pas "la fin du temps" ou "indéfiniment".