【发布时间】:2015-06-02 07:20:31
【问题描述】:
如何通过程序更改数据表中数据列的日期列数据格式。如何实现这个求帮助。我正在将数据表导出到 CSV。在 csv 中,我的日期格式应为“yyyy/MM/dd hh:mm”。
【问题讨论】:
-
能否请您也展示一下您的作品?输入和输出示例。
标签: c#
如何通过程序更改数据表中数据列的日期列数据格式。如何实现这个求帮助。我正在将数据表导出到 CSV。在 csv 中,我的日期格式应为“yyyy/MM/dd hh:mm”。
【问题讨论】:
标签: c#
如果您想从 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。
【讨论】: