Враховуючи характер типу даних про дату / час, він не може містити nullзначення, тобто він повинен містити значення, він не може бути порожнім або нічого не містити. Якщо ви позначаєте змінну дати / часу як nullableтоді, ви можете лише призначити нульове значення. Тож те, що ти шукаєш, - це одна з двох речей (їх може бути більше, але я можу думати лише про дві):
Призначте мінімальну величину дати / часу для вашої змінної, якщо у вас немає для неї значення. Ви також можете призначити максимальне значення дати / часу - залежно від способу. Просто переконайтеся, що ви відповідаєте загально на сайті під час перевірки значень дати / часу. Вирішіть із використання minабо maxдотримуйтесь його.
Позначте змінну дати / часу як nullable. Таким чином ви можете встановити змінну дати / часу, nullякщо у вас немає змінної.
Дозвольте продемонструвати свій перший пункт на прикладі. Тип DateTimeзмінної не може бути встановлений до нуля, їй потрібне значення, в цьому випадку я збираюся встановити його на DateTimeмінімальне значення, якщо немає значення.
Мій сценарій полягає в тому, що у мене є BlogPostклас. У ньому багато різних полів / властивостей, але для цього прикладу я вибрав лише два. DatePublishedце коли публікація була опублікована на веб-сайті та має містити значення дати / часу. DateModifiedце коли публікація змінена, тому вона не повинна містити значення, але може містити значення.
public class BlogPost : Entity
{
public DateTime DateModified { get; set; }
public DateTime DatePublished { get; set; }
}
Використання ADO.NETдля отримання даних з бази даних (призначити DateTime.MinValueнемає значення):
BlogPost blogPost = new BlogPost();
blogPost.DateModified = sqlDataReader.IsDBNull(0) ? DateTime.MinValue : sqlDataReader.GetFieldValue<DateTime>(0);
blogPost.DatePublished = sqlDataReader.GetFieldValue<DateTime>(1);
Ви можете досягти мого другого пункту, позначивши DateModifiedполе як nullable. Тепер ви можете встановити його, nullякщо для нього немає значення:
public DateTime? DateModified { get; set; }
Використовуючи ADO.NETдля отримання даних з бази даних, це буде виглядати трохи інакше, як це було зроблено вище (призначення nullзамість DateTime.MinValue):
BlogPost blogPost = new BlogPost();
blogPost.DateModified = sqlDataReader.IsDBNull(0) ? (DateTime?)null : sqlDataReader.GetFieldValue<DateTime>(0);
blogPost.DatePublished = sqlDataReader.GetFieldValue<DateTime>(1);
Я сподіваюся, що це допоможе усунути будь-яку плутанину. Зважаючи на те, що моя відповідь приблизно через 8 років, ви, напевно, зараз експерт на програмі C # :)