大家好,
我的问题很简单,但请记住,我没有将它绑定到任何网格或任何ASP.NET控件我有自己的网格控件,我想将它保留为DateTime列以进行排序。
我正在使用列类型DateTime创建DataTable。
DataTable data = new DataTable();
data.Columns.Add("Invoice Date", typeof(DateTime));
DataRow dr = data.NewRow();
dr[0] = DateTime.Now;
//Adding filled row to the DataTable object
dataTable.Rows.Add(dr);
当值显示在ASP.NET页面上时 它显示的是这样的:
"2/28/2011 12:00:00 AM"
我有2个这样的列,在1列中我想显示日期而在其他列中我想将日期显示为“2011年12月”,如果我使用带有类型字符串的DataColumn但在这种情况下可以实现这些格式排序不正常。
请帮忙。
感谢。
答案 0 :(得分:3)
首先只采取日期部分
dr[0] = DateTime.Now.Date;
第二次使用
<asp:Label ID="Label1" runat="server" Text='<%#
((DateTime)Eval("ItemValue")).ToShortDateString() %>'></asp:Label>
绑定值时的方法
修改强>
不确定,但您可以查看此答案可能有助于您解决问题:Is it possible to format a date column of a datatable?
答案 1 :(得分:1)
您似乎在混合您的概念。数据库及其中的表格的目的是存储数据---而不是格式化它。这是一个实现细节,具体如何存储。就像你不关心数据表是否使用UTF-8或UTF-16存储你的字符串一样,你不应该关心它存储日期的格式。在这种情况下,它几乎肯定存储为纳秒数从公元0001年1月1日午夜12点开始,也就是说,如果你真的以数据库的二进制格式挖掘,你会发现那些纳秒。
现在,您的UI层(即ASP.NET页面)的目的是显示数据。 此是您做出任何格式化决策的地方。
一个UI层是您用于查看数据库的任何软件。该软件将一些纳秒数(即内部存储格式)转换为字符串“2/28/2011 12:00:00 AM”。这样做的原因是因为这是显示时间点的默认格式。
您正在编码的UI层 - 您可以控制的 - 现在需要选择 将这些纳秒转换为文本的方式。如果它与默认值一致,它将显示“2/28/2011 12:00:00 AM”。但是如果你不想要默认值,你需要实际指定它。 Pranay Rana的回答让我们知道如何做到这一点。 这是您的UI图层的重点。