转换为CSV C#时如何替换格式日期

罗伯茨

将数据转换为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;

值得一试

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章