在C#中获取System Nullable datetime(datetime?)的简短日期

use*_*143 41 .net c# datetime nullable

如何获得短期约会 System Nullable datetime (datetime ?)

对于ed 12/31/2013 12:00:00- >只应该返回12/31/2013.

我看不到ToShortDateString可用的.

Dar*_*ren 95

你需要先使用.Value(因为它可以为空).

var shortString = yourDate.Value.ToShortDateString();
Run Code Online (Sandbox Code Playgroud)

但也要检查yourDate是否有值:

if (yourDate.HasValue) {
   var shortString = yourDate.Value.ToShortDateString();
}
Run Code Online (Sandbox Code Playgroud)

  • 并首先检查`yourDate.HasValue`. (6认同)

Tim*_*ter 16

string.Format("{0:d}", dt); 作品:

DateTime? dt = (DateTime?)DateTime.Now;
string dateToday = string.Format("{0:d}", dt);
Run Code Online (Sandbox Code Playgroud)

演示

如果是,DateTime?null返回一个空字符串.

请注意,"d"自定义格式说明符ToShortDateString.

  • 这应该是接受的答案,因为它可以优雅地处理空值.您可以选择使用字符串插值 - DateTime?dt =(DateTime?)DateTime.Now; string dateToday = $"{dt:d}" (2认同)

JNY*_*ger 6

该功能在DateTime课堂上绝对可用.请参阅该课程的MSDN文档:http: //msdn.microsoft.com/en-us/library/system.datetime.toshortdatestring.aspx

由于Nullable是类的通用,因此DateTime您需要使用实例的.Value属性DateTime?来调用底层类方法,如下所示:

DateTime? date;
String shortDateString;
shortDateString = date.Value.ToShortDateString();
Run Code Online (Sandbox Code Playgroud)

请注意,如果您在datenull时尝试此操作,则会抛出异常.

  • `DateTime!= DateTime?`(`Nullable <DateTime>`). (3认同)

Ste*_*ner 5

如果要确保要显示的值,可以GetValueOrDefault()ToShortDateString其他类似的方法结合使用:

yourDate.GetValueOrDefault().ToShortDateString();
Run Code Online (Sandbox Code Playgroud)

如果该值恰巧为空,则将显示01/01/0001。