Как вы управляете выходным форматом даты при записи файла CSV с помощью FileHelpers?

Я использую библиотеку FileHelpers 2.0 для записи CSV-файла, используя класс ClassBuilder для создания типа записи.

Мои данные содержат даты, поэтому я создаю поле типа DateTime, но когда файл создается, значения даты выводятся в формате ddmmyyyy, а не dd/mm/yyyy, например. 28042000 вместо 28/04/2000.

Я установил для свойства DateFormat класса CsvOptions значение "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();
    }

person John Mills    schedule 23.08.2010    source источник


Ответы (1)


Оказывается нужно использовать свойство Converter класса FieldBuilder.

Добавление следующего блока кода в мой метод позволяет настроить формат даты в результирующем CSV-файле.

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