Спросите себя, зачем вам такая переменная в первую очередь.
Скорее всего, вы лжете о своих данных: всякий раз, когда вам нужна переменная «конец времени», вы не ссылаетесь на фактический конец времени; скорее вы выражаете такие вещи, как «нет верхней границы для этой даты», «это событие продолжается бесконечно» или подобное.
Таким образом, правильное решение состоит в том, чтобы выразить эти намерения напрямую, вместо того, чтобы полагаться на магическое значение: использовать типы дат, допускающие значение NULL (где null
указано «не задано конечное значение даты»), добавить «неопределенное» логическое поле, использовать полиморфную оболочку (которая может будь то реальная дата или специальное «неопределенное» значение), или то, что может предложить ваш язык программирования.
Конечно, правильное решение не всегда выполнимо, поэтому вы можете в конце концов использовать магическое значение, но когда вы это сделаете, вы должны выбрать подходящее значение для каждого конкретного случая, потому что какие даты делают и не делают смысл имеет смысл в зависимости от домена, который вы моделируете - если вы храните временные метки журнала, 01.01.2999 является разумным «концом времени»; я полагаю, что шансы на то, что ваше приложение будет использоваться почти 1000 лет назад, практически равны нулю. Аналогичные соображения относятся к календарным приложениям. Но что, если ваша программа предназначена для обработки научных данных, скажем, долгосрочных прогнозов о климате Земли? Те, кто может захотеть заглянуть в будущее на тысячу лет. Или сделайте еще один шаг вперед; астрономия, область, где вполне разумно рассуждать в очень больших временных интервалах порядка миллиардов лет, и в путь и в будущее. Для тех 01.01.2999 - совершенно нелепый произвольный максимум. OTOH, календарная система, способная обрабатывать временные промежутки в десять триллионов лет в будущем, вряд ли практична для системы отслеживания назначений стоматолога, хотя бы из-за емкости хранилища.
Другими словами, не существует единственного лучшего выбора для значения, которое является неправильным и произвольным по определению для начала. Вот почему на самом деле редко можно встретить определенное в любом языке программирования; те, которые обычно не называют его «концом времени», а скорее что-то вроде DATE_MAX
(или Date.MAX
), и принимают его как «наибольшее значение, которое может быть сохранено в типе данных даты», а не «конец времени» или « на неопределенный срок».