CsvHelper更改日期和时间的输出方式

时间:2016-09-19 02:31:47

标签: c# .net csvhelper

我正在使用CsvHelper来编写一些CSV文件,并希望将日期和时间的格式更改为特定的格式。根据{{​​3}}的建议,我可以为每个班级成功创建地图。

然而,它有一个明显的缺点,我现在需要为我要导出的所有类创建自定义地图。因为我总是希望所有导出的字段都成为维护的噩梦,因为我每次都要修改地图。

那么有没有简单的方法告诉CsvHelper使用特定格式写所有日期和时间

2 个答案:

答案 0 :(得分:6)

使用CsvHelper的较新版本(12.1.2),可以使用TypeConverterOptionsCache

对其进行存档
var options = new TypeConverterOptions { Formats = new[] { "MM/dd/yyyy" } };
csvWriter.Configuration.TypeConverterOptionsCache.AddOptions<DateTime>(options);

输出日期

08/24/1991

答案 1 :(得分:2)

您可以使用TypeConverterOptionsFactory按类型全局设置。

void Main()
{
    using (var stream = new MemoryStream())
    using (var reader = new StreamReader(stream))
    using (var writer = new StreamWriter(stream))
    using (var csv = new CsvWriter(writer))
    {
        var options = new TypeConverterOptions
        {
            Format = "o"
        };
        TypeConverterOptionsFactory.AddOptions<DateTime>(options);

        csv.WriteField(DateTime.Now);
        csv.NextRecord();
        writer.Flush();
        stream.Position = 0;

        reader.ReadToEnd().Dump();
    }
}

输出:

2016-09-19T11:01:41.5507054-05:00