CSV 帮助程序将字符串转换为日期时间



需要一种方法来使用 CsvHelper nuget 包将 csv 文件中格式为"yyyyMMDD"格式的字符串转换为日期时间格式"MM/DD/YYYY"。

设置单个DateTime属性的TypeConverterOption

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.Configuration.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");
}
}

设置所有DateTime属性的TypeConverterOptions

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.Configuration.TypeConverterOptionsCache.AddOptions<DateTime>(options);
var records = csv.GetRecords<Test>().ToList();
}
}

最新更新