【发布时间】:2015-09-11 21:01:16
【问题描述】:
好的,所以我的DataTable 中有一个列是DateTime,它必须保持为DateTime,以便正确排序。问题是我无法像我需要的那样将其格式化为 MM/dd/yyyy 格式。下面是我的方法的代码,它格式化 DateTable 并从中创建一个新的格式化的,这是我唯一遇到格式化问题的列。它总是像01/15/2014 12:00:00 AM一样回来
private DataTable formatDataTable17(DataTable dt)
{
DataTable dtNew = new DataTable();
for (int i = 0; i < dt.Columns.Count; i++)
{
// Checks to see if the column name is date
// if it is, then change the datatype of that
// column to date time.
if(dt.Columns[i].ColumnName.ToLower() == "date")
{
dtNew.Columns.Add(dt.Columns[i].ColumnName, typeof(DateTime));
}
else
{
dtNew.Columns.Add(dt.Columns[i].ColumnName, typeof(String));
}
}
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow newRow = dtNew.NewRow();
//newRow[0] = dt.Rows[i][0]; //Date
newRow[0] = string.Format("{0:MM/dd/yyyy}", dt.Rows[i][0].ToString());
newRow[1] = dt.Rows[i][1]; //CICS Region
newRow[2] = dt.Rows[i][2]; //Transaction
newRow[3] = dt.Rows[i][3]; //LPAR
newRow[4] = String.Format("{0:0.000000}", dt.Rows[i][4]); //CPU Per Transaction
newRow[5] = String.Format("{0:###,###,##0}", dt.Rows[i][5]); //Transaction Count
newRow[6] = String.Format("{0:###,###,##0.00}", dt.Rows[i][6]); //MIPS Rate
newRow[7] = String.Format("{0:0.000000}", dt.Rows[i][7]); //MIPS Usage
dtNew.Rows.Add(newRow);
}
【问题讨论】:
-
string.Format("{0:MM/dd/yyyy}", dt.Rows[i][0].ToString())不起作用,因为您无法格式化字符串。删除.ToString()。 -
@OlivierJacot-Descombes 我在没有 .ToString() 的情况下完成了它并得到了相同的结果。我已经尝试过 DateTime.ParseExact 并且仍然保持相同的格式。我也无法更改我的网格视图,因为它包含除日期之外的其他内容
-
必须将
DateTime传递给格式化函数,否则将不起作用。如果dt.Rows[i][0]包含一个字符串,它将保持该字符串的格式。格式化是将二进制值转换为字符串的过程。
标签: c# datetime datatables