Ответ 1
Вам нужно будет использовать свойство .Value
для вашего значения:
c.StartDate.Value.Day.ToString() //etc
После проверки null
вы можете:
c.StartDate.Value.ToString("dd-MMM-yyyy");
У меня есть одно поле datetime, которое не равно NULL, и 1, которое является нулевым. Я могу использовать следующий код с не обнуляемым:
c.StartDate.Day.ToString() + "/" +
c.StartDate.Month.ToString() + "/" +
c.StartDate.Year.ToString()
Но когда я пытаюсь сделать это с нулевым значением, я получаю ошибку:
"System.Nullable" не содержит определения для "День", и не может быть найден метод расширения "День", принимающий первый аргумент типа "System.Nullable" (вам не хватает директивы using или ссылки на сборку? )
Как мне получить День, Месяц, Год NULL-времени?
Вам нужно будет использовать свойство .Value
для вашего значения:
c.StartDate.Value.Day.ToString() //etc
После проверки null
вы можете:
c.StartDate.Value.ToString("dd-MMM-yyyy");
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";
if(c.EndDate.HasValue)
{
c.EndDate.Value.Day.ToString() + ...
}
Вы также можете проверить ToString()
даты и преобразовать ее в строку только с одним шаблоном форматирования и без конкатенации.
Что бы вы хотели, чтобы результат был? "//"
Вы можете создать методы расширения, которые возвращают "", но у вас все еще есть проблема с тем, что вы хотите, чтобы на самом деле был конечный результат.