使用 FileHelpers 写入 CSV 文件时如何控制日期的输出格式?

发布于 2024-09-15 12:15:02 字数 1075 浏览 11 评论 0原文

我正在使用 FileHelpers 2.0 库编写 CSV 文件,并使用 ClassBuilder 类生成记录类型。

我的数据包含日期,因此我创建了一个 DateTime 类型的字段,但生成文件时,日期值以 ddmmyyyy 格式显示,而不是 dd/ mm/yyyy 例如 28042000 而不是 28/04/2000

我已将 CsvOptions 类的 DateFormat 属性设置为 "dd/MM/yyyy" 但没有帮助。

这是生成记录类型的代码:

    private Type CreateRecordType()
    {
        int propertyIndex = 0;
        var csvOptions = new CsvOptions("Flat" + _report.RootType.Name, ',', Properties.Count)
                             {
                                 DateFormat = "dd/MM/yyyy"
                             };
        var classBuilder = new CsvClassBuilder(csvOptions);

        foreach(var property in Properties)
        {
            var fieldBuilder = classBuilder.FieldByIndex(propertyIndex++);
            fieldBuilder.FieldName = property.Name;
            fieldBuilder.FieldType = property.Type.Name;
        }

        return classBuilder.CreateRecordClass();
    }

I'm using the FileHelpers 2.0 library to write a CSV file using the ClassBuilder class to generate a record type.

My data contains dates and so I create a field of type DateTime, but when the file is generated the date values come out in the format ddmmyyyy rather than dd/mm/yyyy e.g. 28042000 instead of 28/04/2000.

I've set the DateFormat property of the CsvOptions class to "dd/MM/yyyy" but it doesn't help.

Here is the code that generates the record type:

    private Type CreateRecordType()
    {
        int propertyIndex = 0;
        var csvOptions = new CsvOptions("Flat" + _report.RootType.Name, ',', Properties.Count)
                             {
                                 DateFormat = "dd/MM/yyyy"
                             };
        var classBuilder = new CsvClassBuilder(csvOptions);

        foreach(var property in Properties)
        {
            var fieldBuilder = classBuilder.FieldByIndex(propertyIndex++);
            fieldBuilder.FieldName = property.Name;
            fieldBuilder.FieldType = property.Type.Name;
        }

        return classBuilder.CreateRecordClass();
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

温柔嚣张 2024-09-22 12:15:02

事实证明,您需要使用 FieldBuilder 类的 Converter 属性。

将以下代码块添加到我的方法中可以让我在生成的 CSV 文件中自定义日期格式。

if (property.Type == typeof(DateTime))
{
   fieldBuilder.Converter.Kind = ConverterKind.Date;
   fieldBuilder.Converter.Arg1 = "dd/MM/yyyy";
}

It turns out you need to use the Converter property of the FieldBuilder class.

Adding the following block of code to my method allows me to customise the date format in the resulting CSV file.

if (property.Type == typeof(DateTime))
{
   fieldBuilder.Converter.Kind = ConverterKind.Date;
   fieldBuilder.Converter.Arg1 = "dd/MM/yyyy";
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文