2016-09-19 2 views
-1

Я использую CsvHelper для записи некоторых файлов CSV и хочу изменить формат моих дат и времени на что-то конкретное. Следуя советам от https://stackoverflow.com/a/31817621/223742, я могу успешно создавать карты для каждого из моих классов.CsvHelper меняет дату и время вывода

Однако у него есть явный недостаток, что теперь мне нужно создать пользовательские карты для всех классов, которые я хочу экспортировать. Поскольку я всегда хочу, чтобы все экспортируемые поля становились кошмаром для обслуживания, я должен каждый раз менять карты.

Итак, есть ли простой способ сказать CsvHelper написать все даты и время с использованием определенного формата?

ответ

1

Вы можете установить его глобально для каждого типа, используя 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 
Смежные вопросы