C# DataTable日期时间格式问题

C# DataTable日期时间格式问题,c#,datetime,datatables,C#,Datetime,Datatables,好的,我的数据表中有一列是日期时间,它必须保持为日期时间,以便正确排序。问题是我无法将其格式化为我需要的MM/dd/yyyy格式。下面是我的方法的代码,它格式化了日期表,并从中创建了一个新的格式化表,这是我唯一遇到格式化问题的列。它总是像01/15/2014 12:00:00 AM那样返回 private DataTable formatDataTable17(DataTable dt) { DataTable dtNew = new DataTable(); for (int

好的,我的
数据表中有一列是
日期时间
,它必须保持为
日期时间
,以便正确排序。问题是我无法将其格式化为我需要的MM/dd/yyyy格式。下面是我的方法的代码,它格式化了
日期表
,并从中创建了一个新的格式化表,这是我唯一遇到格式化问题的列。它总是像
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);

    }
专用数据表格式数据表17(数据表dt)
{
DataTable dtNew=新DataTable();
对于(int i=0;i
DataTable
只是一个存储数据的地方

它为用户呈现(格式化)的方式应该由您决定用于在
数据表中显示数据的任何控件来处理

例如,如果您使用的是
DataGridView
(WinForms),则可能有如下代码:

dataGridView1.DataSource = dt;

dataGridView1.Columns["date"].DefaultCellStyle.Format = "MM/dd/yyyy";

您不需要那种
formatDataTable17()
方法。

A
DataTable
只是一个存储数据的地方

它为用户呈现(格式化)的方式应该由您决定用于在
数据表中显示数据的任何控件来处理

例如,如果您使用的是
DataGridView
(WinForms),则可能有如下代码:

dataGridView1.DataSource = dt;

dataGridView1.Columns["date"].DefaultCellStyle.Format = "MM/dd/yyyy";
您不需要那种
formatDataTable17()
方法。

您可以这样尝试

newRow[0] = Convert.ToDateTime(dt.Rows[i][0]).ToString("MM/dd/yyyy");
你可以这样试试

newRow[0] = Convert.ToDateTime(dt.Rows[i][0]).ToString("MM/dd/yyyy");

string.Format(“{0:MM/dd/yyyy}”,dt.Rows[i][0].ToString())
不起作用,因为您无法格式化字符串。请删除
.ToString()
@OlivierJacot Descombes,我在没有.ToString()的情况下完成了它并得到相同的结果。我尝试了DateTime.ParseExact,但仍然保持相同的格式。我也无法更改gridview,因为它包含除Date之外的其他内容。您必须将
DateTime
传递给format函数,否则它将不起作用。如果
dt.Rows[I][0]
包含一个字符串,它将保留此字符串的格式。格式化是将二进制值转换为字符串的过程。
string.format(“{0:MM/dd/yyyyy}”,dt.Rows[i][0].ToString())
不起作用,因为无法格式化字符串。请删除
.ToString()
@OlivierJacot Descombes我在没有.ToString的情况下完成了它()并得到相同的结果。我尝试了DateTime.ParseExact,但仍然保持相同的格式。我也无法更改gridview,因为它包含除Date之外的其他内容。您必须将
DateTime
传递给format函数,否则它将无法工作。如果
dt.Rows[I][0]
包含一个字符串,它将保留此字符串的格式。格式化是将二进制值转换为字符串的过程。