更改日期格式或标签ItemTemplate的字符串长度

Rua*_*uan 0 c# sql asp.net date

有没有办法格式化我从我的数据集(这是一个日期类型)得到的文本,以不显示时间.

我在我的SQL查询中将日期格式化为不显示时间,但后来我不得不将其更改为字符串,我需要数据类型仍为日期.

所以我不能再用这个了......

CONVERT(varchar(15),em.endDate,111)as endDate - > 2001/05/05

这不起作用

CONVERT(Date,em.endDate,111) - >输出:输出:5/5/2001 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>
Run Code Online (Sandbox Code Playgroud)

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

Tim*_*ter 5

是的,你可以使用ToShortDateString:

Text='<%# ((DateTime)Eval("endDate")).ToShortDateString() %>'
Run Code Online (Sandbox Code Playgroud)

要么

Text='<%#Eval("endDate","{0:d}")%>'
Run Code Online (Sandbox Code Playgroud)

标准日期和时间格式字符串

或者使用RowDataBound(假设GridView,也适用于其他webdatabound控件,如带ItemDataBound事件的Repeater ):

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");
    }
}
Run Code Online (Sandbox Code Playgroud)