更改日期数据表中数据列的列数据格式

时间:2015-06-02 07:20:32

标签: c#

如何通过程序更改数据表中数据列的日期列数据格式。如何实现这一寻求帮助。我正在将数据表导出为CSV。在csv中,我的日期格式应为" yyyy / MM / dd hh:mm"。

1 个答案:

答案 0 :(得分:1)

如果您要从DataTable创建CSV文件并将特定格式应用于日期列,则可以DateTime.ToString使用custom format string

在你想要的情况下。 yyyy/MM/dd hh:mm。但是,自/ will be replaced by your current date separator以来,您必须将其转义(yyyy'/'MM'/'dd hh:mm)或使用CultureInfo.InvariantCulture

StringBuilder sb = new StringBuilder(); 

IEnumerable<string> columnNames = dt.Columns.Cast<DataColumn>().
                                  Select(column => column.ColumnName);
sb.AppendLine(string.Join(",", columnNames));

var inv = CultureInfo.InvariantCulture;
foreach (DataRow row in dt.Rows)
{
    IEnumerable<string> fields = dt.Columns.Cast<DataColumn>()
        .Select(col => col.DataType == typeof(DateTime)
            ? row.Field<DateTime>(col).ToString("yyyy/MM/dd hh:mm", inv) 
            : row.IsNull(col) ? "" : row[col].ToString());
    sb.AppendLine(string.Join(",", fields));
}

File.WriteAllText("filename.csv", sb.ToString());

您应该选择比逗号更安全的分隔符。

这假设DataColumn的类型已经DateTime(应该是什么样的)。如果是字符串,则必须首先将其解析为DateTime才能应用所需的格式。因此,请使用DateTime.Parse