我在将数据转换为 csv 时遇到问题,尤其是格式日期“dd-MM-yyyy”。
public void Export_CSV(DataTable dt, string FileName, string Separator, string Path)
{
string path = HttpContext.Current.Server.MapPath("~/" + Path + "/" + FileName + ".csv");
StringBuilder sb = new StringBuilder();
string[] columnNames = dt.Columns.Cast<DataColumn>().
Select(column => column.ColumnName).
ToArray();
sb.AppendLine(string.Join(",", columnNames));
foreach (DataRow row in dt.Rows)
{
string[] fields = row.ItemArray.Select(field => field.ToString()).
ToArray();
sb.AppendLine(string.Join(",", fields));
}
File.WriteAllText(path, sb.ToString());
}
结果,格式日期不是常量。它应该像“dd-MM-yyyy”
最佳答案
您可以尝试设置 CurrentInfo.CurrentCulture 的默认 DateTimeFormat,这样您就可以强制使用 ToString 将吐出的默认 DateTime 格式。
我相信默认情况下 .ToString() 将生成与 ShortString 格式相关的 d/MM/yyyy。
尝试在输出日期之前将以下内容添加到您的代码中。
CultureInfo culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
culture.DateTimeFormat.ShortDatePattern = "dd-MMM-yyyy";
Thread.CurrentThread.CurrentCulture = culture;
要恢复到你设置的状态,只需添加一些代码来存储原始值,然后在方法结束时重置
CultureInfo culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
var originalShortDatePattern = culture.DateTimeFormat.ShortDatePattern
culture.DateTimeFormat.ShortDatePattern = "dd-MMM-yyyy";
Thread.CurrentThread.CurrentCulture = culture;
...
Your code
...
culture.DateTimeFormat.ShortDatePattern = originalShortDatePattern ;
Thread.CurrentThread.CurrentCulture = culture;
值得一试
关于c# - 转换为 csv C# 时如何替换格式日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57247183/