如何在DateTime WEB类型的DataTable列中仅设置日期

时间:2011-06-02 06:57:47

标签: c# datetime formatting datatable

enter image description here大家好,

我的问题很简单,但请记住,我没有将它绑定到任何网格或任何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但在这种情况下可以实现这些格式排序不正常。

请帮忙。

感谢。

2 个答案:

答案 0 :(得分:3)

首先只采取日期部分

dr[0] = DateTime.Now.Date;

第二次使用

DateTime.ToShortDateString

    <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图层的重点