相关疑难解决方法(0)

使用CsvHelper编写CSV文件时的自定义转换

我最近一直在做一些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)

.net c# csvhelper

5
推荐指数
1
解决办法
1万
查看次数

使用CSVHelper强制ISO 8601

我正在尝试将以下格式的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)

我究竟做错了什么?

c# datetime iso8601 datetimeoffset csvhelper

4
推荐指数
1
解决办法
1551
查看次数

标签 统计

c# ×2

csvhelper ×2

.net ×1

datetime ×1

datetimeoffset ×1

iso8601 ×1