Как отформатировать метку времени, чтобы показать дату только в виде сетки

На странице aspx я связываю эти метки следующим образом:

  <asp:TemplateField HeaderText="Date of Joining">
            <ItemTemplate>
                <asp:Label ID="Label6" runat="server" Text='<%# Eval("date_of_joining") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Paid Priviledge Date">
            <ItemTemplate>
                <asp:Label ID="Label8" runat="server" 
                    Text='<%# Eval("paid_priviledge_date") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>

И в коде позади я привязываю вид сетки следующим образом: (предоставляется минимальный код)

GridView1.DataSource = dt2;
GridView1.DataBind();

Но столбцы gridview показывают такую ​​дату:

4/12/2011 12:00:00 AM    
4/4/2011 12:00:00 AM

Пожалуйста, предложите, как удалить часть штампа времени и отобразить только часть даты.

Я знаю, как это сделать, форматируя с помощью ToString и SubString. Но я не могу это сделать в gridview.

Ответ 1

Создайте метод FormatDate в своем коде и вызовите это из вашего gridview.
http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx
http://www.csharp-examples.net/string-format-datetime/

Эта часть пойдет в вашем коде за

private object FormatDate(DateTime input)
{
    return String.Format("{0:MM/dd/yy}", input);
}

И этот бит пойдет в вашей разметке

    <asp:TemplateField HeaderText="Date of Joining">
        <ItemTemplate>
            <asp:Label ID="Label6" runat="server" Text='<%# FormatDate(Eval("date_of_joining")) %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Paid Priviledge Date">
        <ItemTemplate>
            <asp:Label ID="Label8" runat="server" 
                Text='<%# FormatDate(Eval("paid_priviledge_date")) %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>

Это то, что я бы назвал D.R.Y. подход к проблеме. Если вам когда-либо нужно каким-либо образом изменить форматирование. Вы можете просто отредактировать метод позади кода, и он будет сладко любить всю вашу разметку.

Ответ 2

Вы можете указать строки форматирования для оператора eval:

Eval("date_of_joining", "{0:dd/MM/yyyy}")

Ответ 3

Используйте "{0:d}" для краткого формата даты. Попробуйте

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

и

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

Ответ 4

Вы можете использовать DataFormatString в связанном поле, то же самое можно установить следующим образом:

<asp:Label ID="Label8" runat="server" Text='<%# Eval("paid_priviledge_date","{0:d}") %>'/>

Ответ 5

Text='<%# (Convert.ToDateTime((Eval("date_of_joining")))).ToShortDateString() %>'

Это самый простой способ, который я обнаружил.