Подтвердить что ты не робот

Нулевое время

У меня есть одно поле datetime, которое не равно NULL, и 1, которое является нулевым. Я могу использовать следующий код с не обнуляемым:

 c.StartDate.Day.ToString() + "/" + 
 c.StartDate.Month.ToString() + "/" + 
 c.StartDate.Year.ToString()

Но когда я пытаюсь сделать это с нулевым значением, я получаю ошибку:

"System.Nullable" не содержит определения для "День", и не может быть найден метод расширения "День", принимающий первый аргумент типа "System.Nullable" (вам не хватает директивы using или ссылки на сборку? )

Как мне получить День, Месяц, Год NULL-времени?

4b9b3361

Ответ 1

Вам нужно будет использовать свойство .Value для вашего значения:

c.StartDate.Value.Day.ToString()  //etc

После проверки null вы можете:

 c.StartDate.Value.ToString("dd-MMM-yyyy");

Ответ 2

if(c.StartDate.HasValue)
{
  DateTime sd = c.StartDate.Value;
  str = sd.Day.ToString() + "/" + sd.Month.ToString() + "/" + sd.Year.ToString()
}
else
  str = "some alternative for when there no date";

Упрощение:

string str = c.StartDate.HasValue ? c.StartDate.value.ToString(@"d\/M\/yyyy") ? "some alternative for when there no date";

Ответ 3

if(c.EndDate.HasValue)
{
    c.EndDate.Value.Day.ToString() + ...
}

Вы также можете проверить ToString() даты и преобразовать ее в строку только с одним шаблоном форматирования и без конкатенации.

Ответ 4

Что бы вы хотели, чтобы результат был? "//"

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