CSV Helper 将字符串转换为日期时间

赛克里希纳

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

大卫啄木鸟

TypeConverterOption为各个DateTime属性设置

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

TypeConverterOptions为所有DateTime属性设置

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();
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章