3

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

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

我想把它格式化为

... Eval("MyDateTime", "{0:d}") ... // Display only the date

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

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

这可能吗?我该怎么做?

感谢您提前提示!

4

6 回答 6

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");
    }
}

并更改 .aspx 来调用它:

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

如果您在多个地方执行此操作,请考虑为其编写扩展方法DateTime并将此逻辑放在那里(可能使用其他参数来提供不同的格式等)。

于 2010-02-19T15:42:18.837 回答
1

没有测试,但在我的脑海中:

在标记中

<asp:Label ID="MyDateTimeLabel" runat="server" 
     Text='<%# FormatMyDateTime((DateTime)Eval("MyDateTime")) %>' />

在代码隐藏中:

protected string FormatMyDateTime(DateTime date)
{
      // Do your if else for formatting here.
}
于 2010-02-19T15:39:11.860 回答
1

您没有提及您使用哪种 .net 语言。使用 VB.NET,您可以使用以下内联表达式:

... Text='<%# Eval("MyDateTime", If(Eval("MyDateTime").TimeOfDay = TimeSpan.Zero, "{0:d}", "{0:g}")) %>'

我没有用 C# 进行测试,但我想用If(...)三元?:运算符替换并将结果转换Eval为 aDateTime在访问之前TimeOfDay应该可以解决问题。

于 2010-02-19T15:54:21.557 回答
0

我不确定你是否正在寻找这个,但我觉得值得一试。希望它有效。

<%# String.Format(Eval("MyDateTime"),"{0:d}") %>

<%# String.Format(Eval("MyDateTime"),"{0:g}") %>
于 2010-02-19T15:39:02.883 回答
0

您可以替换 aspx 文件中的以下代码或创建一个方法并调用该方法以返回值。

<%
   DateTime dtTime = DateTime.Now;

    if (dtTime.TimeOfDay == TimeSpan.Zero)
        Response.Write(String.Format("{0:d}", dtTime));
    else
        Response.Write(String.Format("{0:g}", dtTime));
%>
于 2010-02-19T15:43:09.117 回答
0

仅显示日期部分

<asp:Label id="lblExamDate" runat="server" Text='<%#Convert.ToDateTime(Eval("theExamDate.Date")).ToShortDateString()%>'></asp:Label>

并且只显示时间部分

<asp:Label ID="lblStartTime" runat="server" Text='<%#Convert.ToDateTime(Eval("ExamStartTime")).ToShortTimeString()%>' />
于 2013-08-14T15:33:35.183 回答