48

如何获取短日期 获取短日期System Nullable datetime (datetime ?)

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

我没有看到ToShortDateString可用的。

4

7 回答 7

114

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

var shortString = yourDate.Value.ToShortDateString();

但也要检查是否yourDate有值:

if (yourDate.HasValue) {
   var shortString = yourDate.Value.ToShortDateString();
}
于 2013-09-24T13:00:58.657 回答
21

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

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

演示

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

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

于 2013-09-24T13:08:18.600 回答
8

该功能在类中绝对可用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();

请注意,如果您尝试此操作 while dateis null ,则会引发异常。

于 2013-09-24T13:01:04.757 回答
6

如果要保证有值显示,可以GetValueOrDefault()结合ToShortDateString其他postelike这样的方法使用:

yourDate.GetValueOrDefault().ToShortDateString();

如果该值恰好为空,这将显示 01/01/0001。

于 2013-09-24T13:05:49.653 回答
1

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

if (nullDate.HasValue)
{
     nullDate.Value.ToShortDateString();
}
于 2013-09-24T13:05:31.137 回答
1

尝试

    if (nullDate.HasValue)
    {
         nullDate.Value.ToShortDateString();
    }
于 2016-08-16T09:49:19.197 回答
0

如果您使用的是 .cshtml,那么您可以使用 as

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

或者,如果您尝试在 c# 中查找操作或方法中的短日期,那么

yourDate.GetValueOrDefault().ToShortDateString();

史蒂夫已经在上面回答了。

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

于 2017-11-16T08:17:56.050 回答