2014-01-13 98 views
0

我有一個像這樣的列的巨大的CSV文件。使用C#將Linq轉換爲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); } 
    } 
} 

在此先感謝您的幫助。

+2

問題不清楚!你可以解釋更多 – Kirk

+0

使用格式和文化,當你打印日期 – Grundy

回答

0

如果你想爲特定的文化輸出時間值可以使用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); 
} 
+0

不幸的是沒有工作。我使用這裏的教程http://www.codeproject.com/Articles/25133/LINQ-to-CSV-library#OutputFormat – Muzab

+0

什麼是具體沒有工作?它會以選定區域性格式輸出日期時間,在本例中爲'sv-SE',您需要哪種格式的日期時間輸出? – Grundy

+0

「col1」格式爲「2013-12-17 15.52.35」。我希望它按照原樣打印它。我認爲它是sv-SE格式,但這不能幫助我猜。但如果我將格式更改爲「15:52:35」,則打印時不會出現任何錯誤。 – Muzab

相關問題