比较gridview eval中的日期时间

时间:2015-09-28 16:00:54

标签: asp.net datetime gridview eval bind

我在gridview中有一个标签,我在那里显示发送日期时间的消息,具体取决于消息是今天发送还是更早。如果消息是今天发送的,它应该显示时间,如果它是之前发送的,它会显示日期( DD-MM-YYYY)。 SentDateTime是给出所需dateTime的列。

我试过以下内容:

<asp:Label ID="lblMsgTime" runat="server" Text='<%# Eval("SentDateTime","{0:dd-MM-yyyy}").Equals(DateTime.Now,"{0:dd-MM-yyyy}")? Eval("SentDateTime","{0:HH:mm}"):Eval("SentDateTime","{0:dd-MM-yyyy}") %>' style="color: #FFFFFF"></asp:Label>

但抛出异常

会员&#39; object.Equals(object,object)&#39;无法使用实例引用访问;使用类型名称来限定它

1 个答案:

答案 0 :(得分:2)

问题是您忘记在PATH上致电ToString

DateTime.Now

然而这一切都非常复杂。当可以直接比较日期时,无需比较字符串:

.Equals(DateTime.Now.ToString("{0:dd-MM-yyyy}"))

即使这对于标记看起来太过分了。考虑将此逻辑移到函数后面的代码中:

<%# (DateTime)Eval("SentDateTime") == DateTime.Now ? ...

然后像这样称呼它:

protected string GetDateValue(DateTime sentDateTime)
{
    if (sentDateTime == DateTime.Now)
    {
        return sentDateTime.ToString("HH:mm");
    }
    else
    {
        return sentDateTime.ToString("dd-MM-yyyy");
    }
}