С# Nullable <DateTime> в строку - программирование

С# Nullable <DateTime> в строку

У меня есть переменная DateTime?, иногда значение null, как я могу вернуть пустую строку "", когда значение null или значение DateTime, если не null?

4b9b3361

Ответ 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.