C#Nullable <datetime>到string </datetime>

时间:2009-09-18 17:06:56

标签: c# datetime

我有一个DateTime?变量,有时值为null,当值为""或{{1}时,如何返回空字符串null不是DateTime时的值?

11 个答案:

答案 0 :(得分:97)

虽然其中许多答案都是正确的,但所有答案都是不必要的复杂。 如果值在逻辑上为null,则在可以为空的DateTime上调用ToString的结果已经是空字符串。只需在值上调用ToString;它会完全按照你的意愿行事。

答案 1 :(得分:36)

string date = myVariable.HasValue ? myVariable.Value.ToString() : string.Empty;

答案 2 :(得分:17)

实际上,这是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>

答案 3 :(得分:7)

您可以编写扩展方法

public static string ToStringSafe(this DateTime? t) {
  return t.HasValue ? t.Value.ToString() : String.Empty;
}

...
var str = myVariable.ToStringSafe();

答案 4 :(得分:5)

.ToString() Nullable<T>上拨打null将返回一个空字符串。

答案 5 :(得分:2)

DateTime? d;
// stuff manipulating d;
return d != null ? d.Value.ToString() : String.Empty;

答案 6 :(得分:2)

您只需拨打.ToString()即可。它处理Nullable<T>值的null对象。

以下是Nullable<T>.ToString()的{​​{3}}:

public override string ToString() {
    return hasValue ? value.ToString() : "";
}

答案 7 :(得分:1)

DateTime? MyNullableDT;
....
if (MyNullableDT.HasValue)
{
    return MyNullableDT.Value.ToString();
}
return "";

答案 8 :(得分:1)

if (aDate.HasValue)
    return aDate;
else
    return string.Empty;

答案 9 :(得分:1)

DateTime d?;
string s = d.HasValue ? d.ToString() : string.Empty;

答案 10 :(得分:0)

根据Microsoft's documentation

  

如果HasValue属性为true,则为当前Nullable对象的值的文本表示形式;如果HasValue属性为false,则为空字符串(“”)。