没有DateTime.ToString(string)过载
本文关键字:过载 string DateTime ToString 没有 | 更新日期: 2023-09-27 18:07:18
我知道以自定义格式显示DateTime
的标准过程,如下所示:
MessageBox.Show(dateSent.ToString("dd/MM/yyyy hh:mm:ss"));
但是,当我将变量从DateTime
更改为DateTime?
以接受空值时,我失去了ToString(string)
过载的定义。我需要使用DateTime?
,因为我正在从一个可能具有空值的数据库中读取-如果数据库中的字段具有空值,那么我需要为变量分配一个空值。
我有两个问题:
1)出于好奇,有谁知道DateTime?
不包含ToString(string)
的过载的原因吗?
2)谁能建议一种替代方法来实现我想要达到的目标?
DateTime?
是Nullable<DateTime>
的语法糖,这就是为什么它没有ToString(format)
过载的原因。
但是,您可以使用Value
属性访问底层DateTime
结构。但在此之前,请使用HasValue
检查该值是否存在。
MessageBox.Show(dateSent.HasValue ? dateSent.Value.ToString("dd/MM/yyyy hh:mm:ss") : string.Empty)
您可以编写一个扩展方法,而不必每次都手动执行空检查。
public static string ToStringFormat(this DateTime? dt, string format)
{
if(dt.HasValue)
return dt.Value.ToString(format);
else
return "";
}
然后像这样使用(任何你想要的字符串格式)
Console.WriteLine(myNullableDateTime.ToStringFormat("dd/MM/yyyy hh:mm:ss"));
你仍然可以使用
variableName.Value.ToString(customFormat);