当且仅当时间部分= 00:00:00时,如何在显示中禁止显示.NET DateTime的时间部分?

Sla*_*uma 3 .net asp.net datetime eval datetime-format

在ASP.NET页面中,我有这个:

<asp:Label ID="MyDateTimeLabel" runat="server" 
     Text='<%# Eval("MyDateTime") %>' />
Run Code Online (Sandbox Code Playgroud)

我想把它格式化为

... Eval("MyDateTime", "{0:d}") ... // Display only the date
Run Code Online (Sandbox Code Playgroud)

当且仅当MyDateTime的时间部分是00:00:00时.否则像这样:

... Eval("MyDateTime", "{0:g}") ... // Display date and time in hh:mm format
Run Code Online (Sandbox Code Playgroud)

这是可能的,我该怎么做?

感谢您提前提示!

Jef*_*nal 6

我把它放在我的代码隐藏中:

// This could use a better name!
protected string FormatDateHideMidnight(DateTime dateTime) {
    if (dateTime.TimeOfDay == TimeSpan.Zero) {
        return dateTime.ToString("d");
    } else {
        return dateTime.ToString("g");
    }
}
Run Code Online (Sandbox Code Playgroud)

并更改.aspx以调用:

<asp:Label ID="MyDateTimeLabel" runat="server" 
     Text='<%# FormatDateHideMidnight((DateTime)Eval("MyDateTime")) %>' />
Run Code Online (Sandbox Code Playgroud)

如果你这样做在多个地方,考虑写一个扩展方法DateTime,并把这个逻辑存在(或许与其他参数来提供不同格式等).