我正在尝试使用CsvHelper在一列中加载带有时间戳值的CSV文件。文件被解析并执行GetRecords()
,但是输出记录包含0001-01-01T00:00:00
值的DateTime
,这绝对不是输入中的值。
我创建了一个CsvHelper.Configuration.ClassMap<MyClass>
来协助解析输入的时间戳值并将其注册到配置中,但这似乎无济于事。
List<MyClass> records = new List<MyClass>();
using (var reader = new StreamReader("/path/to/file"))
{
using (var csvReader = new CsvReader(reader))
{
csvReader.Configuration.HeaderValidated = null;
csvReader.Configuration.MissingFieldFound = null;
csvReader.Configuration.RegisterClassMap<CsvMap>();
records.AddRange(csvReader.GetRecords<MyClass>());
}
}
public sealed class CsvMap : CsvHelper.Configuration.ClassMap<MyClass>
{
public CsvMap()
{
string format = "yyyy-MM-dd hh:mm:ss";
var enUS = CultureInfo.GetCultureInfo("en-US");
Map(m => m.Date).TypeConverterOption.Format(format)
.TypeConverterOption.CultureInfo(enUS);
}
}
public class MyClass
{
public DateTime Date { get; set; }
}
输入CSV文件包含2006-10-01 00:00:00
格式的时间戳,我相信该时间戳与CsvMap
类("yyyy-MM-dd hh:mm:ss"
)中指定的格式匹配。但是,CsvHelper
输出的所有日期都是0001-01-01T00:00:00
。
有人可以指出我在做什么错吗?