【问题标题】:Linq to CSV DateTime format using C#使用 C# 将 Linq 转换为 CSV 日期时间格式
【发布时间】:2014-01-13 13:47:52
【问题描述】:

我有一个巨大的 CSV 文件,其中包含这样的列。

col1;col2

2013-12-17 15.52.35;1,09

2013-12-17 16.52.35;2,09

2013-12-17 17.52.35;3,09

我正在尝试打印第一列,但由于日期/时间格式不同而无法打印。但是,它以 2013-12-17 15:52:35 的格式打印该列。

public class LinqData
{
    [CsvColumn(FieldIndex = 1)]
    public DateTime col1 { get; set; }

    [CsvColumn(FieldIndex = 2)]
    public float col2 { get; set; }
}

public class LinqToCSV
{
    public static IEnumerable<LinqData> somefunction()
   {
       var inputFileDescription = new CsvFileDescription
        {
            SeparatorChar = ';',
            MaximumNbrExceptions = -1,
            FileCultureName = "sv-SE"
        };


        CsvContext cc = new CsvContext();

        IEnumerable<LinqData> CSVelements =
            cc.Read<LinqData>(@"C:\sample.csv", inputFileDescription);
        return CSVelements;
    }

   public LinqToCSV()
    {
        var inputFileDescription = new CsvFileDescription
        {
            SeparatorChar = ';',
            MaximumNbrExceptions = -1,
            FileCultureName = "sv-SE"
        };
        CsvContext cc = new CsvContext();

        IEnumerable<LinqData> CSVelements =
            cc.Read<LinqData>(@"C:\sample.csv", inputFileDescription);

        var CSVelementNames = from p in CSVelements
                              orderby p.col1
                              select new { p.col1, p.col2 };

        foreach (var item in CSVelementNames) { Console.WriteLine(item); }
    }
}

提前感谢您的帮助。

【问题讨论】:

  • 问题不清楚!你能解释一下 lil 吗
  • 打印日期时使用格式和文化

标签: c# linq datetime csv


【解决方案1】:

如果您想输出特定文化的日期时间值,您可以像这样使用DateTime.ToString Method (IFormatProvider)

....
foreach (var item in CSVelementNames) { 
    Console.WriteLine("DateTime:{0}, Value:{1}",
    item.col1.ToString(System.Globalization.CultureInfo.GetCultureInfo("sv-SE").DateTimeFormat), 
    item.col2); 
}
....

如果您只想输出日期,则可以使用DateTime.ToShortDateString Method

foreach (var item in CSVelementNames) { 
    Console.WriteLine("Date:{0}",
    item.col1.ToShortDateString()); 
}

或者像这样使用你的自定义格式字符串

foreach (var item in CSVelementNames) { 
    Console.WriteLine("Date:{0:yyyy-MM-dd HH.mm.ss}",item.col1); 
}

【讨论】:

  • 不幸的是,这不起作用。我正在使用这里的教程codeproject.com/Articles/25133/LINQ-to-CSV-library#OutputFormat
  • 什么是混凝土不起作用?它以所选文化的格式输出日期时间,在本例中为sv-SE,您想要哪种格式的日期时间输出?
  • “col1”的格式为“2013-12-17 15.52.35”。我希望它按原样打印。我认为它是 sv-SE 格式,但我猜这无济于事。但如果我将格式更改为“15:52:35”,它会打印没有任何错误。
  • 你能为你的样本提供预期的输出吗?
  • col1= 2013-12-17 15.52.35, col2= 1,09
猜你喜欢
  • 2017-12-09
  • 2015-03-23
  • 1970-01-01
  • 2020-02-24
  • 2017-03-08
  • 1970-01-01
  • 2016-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多