Как обрабатывать специальные значения DateTime - пример Present - PullRequest
2 голосов
/ 12 января 2010

DateTimes - это, как правило, некоторое количество тиков с некоторой начальной даты. Они обычно отображаются с помощью какого-либо инструмента, такого как календарь или тому подобное. Мне кажется, что иногда приложение хотело бы хранить DateTime со специальным значением, таким как «Когда оценивается» или «Никогда» или «Неизвестно».

Например, я работал в компании, где мы запускали Oracle ERP, и у нас были заказы, которые могли иметь дату окончания. Для заказов без конечной даты компания решила сделать конечную дату 01.01.2020, где 01.01.2020 был «флагом» для пользователей и отчетов.

Я думаю, что единственный способ программно обработать эту ситуацию - это иметь второе поле, представляющее «тип» DateTime, но, поскольку это не является общепринятым, для манипуляции с DateTime потребуется специальный код. в целом были согласованы специальные значения для определенных двоичных значений.

Существует ли существующее соглашение для этого или это общая функциональность, о которой я не знаю?

Я имею в виду формат IEEE с плавающей запятой, где определенные двоичные значения представляют бесконечность, NaN (не число) и SQRT (-1)

1 Ответ

2 голосов
/ 12 января 2010

Вы можете использовать Nullable<DateTime> ( документация ), чтобы разрешить нулевые значения. Сокращение для этого типа: DateTime?.

Если вам необходимо различать больше состояний, чем определено / не определено, вы можете применить шаблон проектирования State , но вам нужно будет реализовать состояния самостоятельно.

Полиморфизм в целом является хорошим подходом к решению таких проблем, потому что вы можете инкапсулировать специальную обработку внутри различных подтипов. Это означает, что вам не придется писать много особой обработки в потребляющем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...