2013-04-26 84 views
0

有没有办法将我从我的数据集(这是日期类型)获得的文本格式化为不显示时间。更改日期标签的格式或字符串长度ItemTemplate

我在我的sql查询格式化日期不显示时间,但然后我不得不将其更改为一个字符串,我需要数据类型仍然是日期。

,所以我不能用户这更多...

CONVERT(VARCHAR(15),em.endDate,111)作为结束日期 - > 2001年5月5日

而且这不起作用

CONVERT(日期,em.endDate,111) - >输出:输出:2001年5月5日12:00:00 AM

这是我的模板。

<asp:TemplateField HeaderText="endDate" SortExpression="endDate"> 
    <ItemTemplate> 
     <asp:Label ID="lblEndDate" runat="server" Text='<%# Bind("endDate") %>'></asp:Label> 
    </ItemTemplate> 
</asp:TemplateField> 

有没有办法可以修改模板以切出日期的时间?

回答

5

是的,你可以使用ToShortDateString

Text='<%# ((DateTime)Eval("endDate")).ToShortDateString() %>' 

Text='<%#Eval("endDate","{0:d}")%>' 

Standard Date and Time Format Strings

或者使用RowDataBound(假设GridView,作品也像直放站等webdatabound控制与ItemDataBound事件) :

protected void Gridview1_RowDataBound(Object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     DataRow row = ((DataRowView)e.Row.DataItem).Row; // you might use a different datasource, use the debugger if you are unsure 
     Label lblEndDate = (Label)e.Row.FindControl("lblEndDate"); 
     lblEndDate.Text = row.Field<DateTime>("endDate").ToString("d"); 
    } 
} 
+0

太好了,谢谢!尝试两种方式,他们都工作。 – Ruan 2013-04-26 13:07:03

+0

非常感谢+1 – Pramesh 2014-02-12 21:14:08

+0

如果Eval(“endDate”)为DBNull,请小心。 – Quan 2017-01-12 17:50:28

-1

您可以将该字符串解析为DateTime,然后使用ToString方法在没有时间的情况下对其进行格式化。

根据您想要的格式,你会做这样的事情

myDateTime.ToString("d MMM yyy");