我最近一直在做一些CSV阅读和写作,然后跑过CsvHelper,到目前为止这很棒.我遇到了一个小问题; 我在读取文件时使用自定义转换器,但是当我将它们写回时,该格式将丢失.我的CSV格式如下所示:
67,1234-1,20150115,750,20150115,1340,549,549,406,0,FRG
Run Code Online (Sandbox Code Playgroud)
这些字段20150115,750
映射到一个DateTime
名为Start
(So,01/15/2015 7:50 AM)的字段.我的班级地图如下所示:
public sealed class DutyMap : CsvClassMap<Duty>
{
static readonly CultureInfo enUS = new CultureInfo("en-US");
public DutyMap()
{
Map(m => m.PersonId).Index(0);
Map(m => m.DutyName).Index(1);
Map(m => m.Start).ConvertUsing(row => ParseDate(row.GetField<String>(2), row.GetField<String>(3)));
Map(m => m.End).ConvertUsing(row => ParseDate(row.GetField<String>(4), row.GetField<String>(5)));
Map(m => m.DutyTime1).Index(6);
Map(m => m.DutyTime2).Index(7);
Map(m => m.FlightTime).Index(8);
Map(m => m.CreditHours).Index(9);
Map(m => m.DutyType).Index(10);
}
private static DateTime ParseDate(string date, string time)
{
DateTime ret;
if (time.Length < 4)
time …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将以下格式的ISO8601格式化日期yyyy-MM-ddTHH:mm:ss.fffffff zzz
用于.csv
使用CsvHelper
.
public System.DateTimeOffset ChangeDT { get; set; }
Map(m => m.ChangeDT).ConvertUsing<string>(row => row.GetField<DateTimeOffset>("ChangeDT").ToString("yyyy-MM-ddTHH:mm:ss.fffffff zzz"));
Run Code Online (Sandbox Code Playgroud)
虽然上面的代码产生:
6/10/2014 12:00:00 AM -05:00
Run Code Online (Sandbox Code Playgroud)
我正在寻找输出的是:
2014-06-10 12:00:00.1234567 -05:00
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?