Need a way to Convert a string in the format "yyyyMMDD" in the csv file into DateTime format "MM/DD/YYYY" using CsvHelper nuget package.
Setting the TypeConverterOption
for individual DateTime
properties.
public class Program
{
static void Main(string[] args)
{
using (var stream = new MemoryStream())
using (var writer = new StreamWriter(stream))
using (var reader = new StreamReader(stream))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
writer.WriteLine("Id,Name,Date");
writer.WriteLine("1,one,20200623");
writer.WriteLine("2,two,20190622");
writer.Flush();
stream.Position = 0;
csv.Context.RegisterClassMap<TestMap>();
var records = csv.GetRecords<Test>().ToList();
}
}
}
public class Test
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime Date { get; set; }
}
public sealed class TestMap : ClassMap<Test>
{
public TestMap()
{
Map(m => m.Id);
Map(m => m.Name);
Map(m => m.Date).TypeConverterOption.Format("yyyyMMdd");
}
}
Setting the TypeConverterOptions
for all DateTime
properties.
static void Main(string[] args)
{
using (var stream = new MemoryStream())
using (var writer = new StreamWriter(stream))
using (var reader = new StreamReader(stream))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
writer.WriteLine("Id,Name,Date");
writer.WriteLine("1,one,20200623");
writer.WriteLine("2,two,20190622");
writer.Flush();
stream.Position = 0;
var options = new TypeConverterOptions { Formats = new[] { "yyyyMMdd" } };
csv.Context.TypeConverterOptionsCache.AddOptions<DateTime>(options);
var records = csv.GetRecords<Test>().ToList();
}
}