c# - 转换为 csv C# 时如何替换格式日期

标签 c# asp.net csv

我在将数据转换为 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”

enter image description here

最佳答案

您可以尝试设置 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/

相关文章:

c# - 我可以对嵌套数据转发器控件进行分页的最简单方法是什么?

python - 使用python在保存的csv文件中打印列名

mysql - "Load data infile"插入数据库

encoding - JMeter CSV 数据集破坏了以正确的 UTF-8 格式存储的日文字符串,我得到的是问号

c# - 在 Xamarin 中读取 XML 文件

c# - 使用 System.Type 调用泛型方法

c# - 文本框焦点检查

c# - 我需要一个 .NET 自定义控件库

c# - 如何让 ScriptManager 与 ScriptmanagerProxy 一起工作

c# - iTextPdf 如何分页