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

时间:2013-09-24 12:59:22

标签: c# .net datetime nullable

如何获取System Nullable datetime (datetime ?)

的短日期

for ed 12/31/2013 12:00:00 - >只应返回12/31/2013

我没有看到ToShortDateString可用。

6 个答案:

答案 0 :(得分:93)

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

var shortString = yourDate.Value.ToShortDateString();

但是还要检查yourDate是否有值:

if (yourDate.HasValue) {
   var shortString = yourDate.Value.ToShortDateString();
}

答案 1 :(得分:15)

string.Format("{0:d}", dt);有效:

DateTime? dt = (DateTime?)DateTime.Now;
string dateToday = string.Format("{0:d}", dt);

Demo

如果DateTime?null,则返回空字符串。

请注意,"d" custom format specifierToShortDateString相同。

答案 2 :(得分:6)

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

由于NullableDateTime类之上的通用,因此您需要使用.Value实例的DateTime?属性来调用基础类方法下面:

DateTime? date;
String shortDateString;
shortDateString = date.Value.ToShortDateString();

请注意,如果您在date为空时尝试此操作,则会抛出异常。

答案 3 :(得分:5)

如果您希望保证显示值,可以将GetValueOrDefault()与其他类似的ToShortDateString方法结合使用:

yourDate.GetValueOrDefault().ToShortDateString();

如果值恰好为null,则显示01/01/0001。

答案 4 :(得分:0)

检查它是否有价值,然后获得所需的日期

if (nullDate.HasValue)
{
     nullDate.Value.ToShortDateString();
}

答案 5 :(得分:0)

如果您使用.cshtml,则可以使用

<td>@(item.InvoiceDate==null?"":DateTime.Parse(item.YourDate.ToString()).ToShortDateString())</td>

或者如果您尝试在c#中找到行动或方法中的短日期,那么

yourDate.GetValueOrDefault().ToShortDateString();

史蒂夫已在上面回答。

我已经在我的项目中使用了这个。它工作正常。谢谢。