需要一种使用 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] 删除。
我来说两句