使用CsvHelper加载CSV时日期时间值不正确

时间:2019-02-13 15:17:52

标签: c# .net csv csvhelper

我正在尝试使用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

有人可以指出我在做什么错吗?

0 个答案:

没有答案