Как отформатировать метку времени, чтобы показать дату только в виде сетки
На странице 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() %>'
Это самый простой способ, который я обнаружил.