У меня есть переменная DateTime?
, иногда значение null
, как я могу вернуть пустую строку ""
, когда значение null
или значение DateTime
, если не null
?
С# Nullable <DateTime> в строку
Ответ 1
string date = myVariable.HasValue ? myVariable.Value.ToString() : string.Empty;
Ответ 2
Хотя многие из этих ответов верны, все они бесполезно сложны. Результат вызова ToString в nullable DateTime уже является пустой строкой, если значение логически null. Просто вызовите ToString на ваше значение; он будет делать именно то, что вы хотите.
Ответ 3
Собственно, это поведение по умолчанию для типов Nullable, которые без значения ничего не возвращают:
public class Test {
public static void Main() {
System.DateTime? dt = null;
System.Console.WriteLine("<{0}>", dt.ToString());
dt = System.DateTime.Now;
System.Console.WriteLine("<{0}>", dt.ToString());
}
}
это дает
<>
<2009-09-18 19:16:09>
Ответ 4
Вы можете написать метод расширения
public static string ToStringSafe(this DateTime? t) {
return t.HasValue ? t.Value.ToString() : String.Empty;
}
...
var str = myVariable.ToStringSafe();
Ответ 5
Вызов .ToString()
в Nullable<T>
, который null
вернет пустую строку.
Ответ 6
DateTime? d;
// stuff manipulating d;
return d != null ? d.Value.ToString() : String.Empty;
Ответ 7
Все, что вам нужно сделать, это просто вызвать .ToString()
. Он обрабатывает объект Nullable<T>
для значения null
.
Вот источник .NET Framework для Nullable<T>.ToString()
:
public override string ToString() {
return hasValue ? value.ToString() : "";
}
Ответ 8
DateTime? MyNullableDT;
....
if (MyNullableDT.HasValue)
{
return MyNullableDT.Value.ToString();
}
return "";
Ответ 9
if (aDate.HasValue)
return aDate;
else
return string.Empty;
Ответ 10
DateTime d?;
string s = d.HasValue ? d.ToString() : string.Empty;
Ответ 11
Согласно документации Microsoft:
Текстовое представление значения текущего объекта Nullable, если свойство HasValue равно true, или пустая строка (""), если свойство HasValue имеет значение false.