【问题标题】:Changing Date Column data format for a Data Column in data table更改数据表中数据列的日期列数据格式
【发布时间】:2015-06-02 07:20:31
【问题描述】:

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

【问题讨论】:

  • 能否请您也展示一下您的作品?输入和输出示例。

标签: c#


【解决方案1】:

如果您想从 DataTable 创建 CSV 文件并将特定格式应用于日期列,您可以使用 DateTime.ToStringcustom 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-15
    • 2021-04-14
    • 1970-01-01
    • 2019-01-20
    • 2021-01-26
    • 2016-02-19
    • 2021-09-19
    • 2020-02-04
    相关资源
    最近更新 更多