在gridview eval中比较日期时间
Comparing datetime in gridview eval
我在 gridview 中有一个标签,我在其中显示消息的发送日期时间,具体取决于消息是今天发送的还是 earlier.If 消息是今天发送的,它应该显示时间,如果它是早些时候发送的显示日期 (dd-MM-yyyy)。 SentDateTime 是给出所需日期时间的列。
我试过以下方法:
<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>
但抛出异常
成员 'object.Equals(object, object)' 无法使用实例引用访问;用类型名称来限定它
问题是您忘记在 DateTime.Now
上调用 ToString
:
.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");
}
}
然后这样称呼它:
<%# GetDateValue((DateTime)Eval("SentDateTime")) %>
我在 gridview 中有一个标签,我在其中显示消息的发送日期时间,具体取决于消息是今天发送的还是 earlier.If 消息是今天发送的,它应该显示时间,如果它是早些时候发送的显示日期 (dd-MM-yyyy)。 SentDateTime 是给出所需日期时间的列。
我试过以下方法:
<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>
但抛出异常
成员 'object.Equals(object, object)' 无法使用实例引用访问;用类型名称来限定它
问题是您忘记在 DateTime.Now
上调用 ToString
:
.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");
}
}
然后这样称呼它:
<%# GetDateValue((DateTime)Eval("SentDateTime")) %>