InvalidCastException将字符串转换为DateTime

时间:2015-11-30 18:16:51

标签: c# linq datetime linqpad

基本上尝试读取文件并将其从7列更改为5列并更改日期格式。应该添加我使用linqpad,语言是C#语句。

代码:

string txtFolderPath = @"D:\Testing\BM\";
string[] files = Directory.GetFiles(txtFolderPath, "cplt.csv", SearchOption.AllDirectories);
//files.Dump();

foreach (string file in files)
{
    // reading in csv file
    var csvData = from row in new CpltData(@file, 1000000, 1000000, "") 
    //@"C:\Miu\Blue Fin III - A\Blue Fin III - A\cplt.csv"

    select new
    {
        Period = row.Period,
        IndexEltId = row.IndexEltId,
        EventId = row.EventId,
        Date = row.Date.ToString("dd-MMM-yyyy HH.mm.ss"),
        Payout = row.Payout
    };

    //csvData.Dump();

    Util.WriteCsv(csvData, @file);

}
  

错误消息:InvalidCastException无法转换值' 8/22/2015   上午1:19:01'到第2行的DateTime

以下行发生错误:

  

var csvData =来自新CpltData中的行(@ file,1000000,1000000,"")

CpltData(string csvFilePath, int noOfPeriods, double principal, string currency)

它是从某个dll导入的,不确定如何访问它:/

1 个答案:

答案 0 :(得分:2)

错误消息非常清楚:您正在使用完美的DateTime变量,将其转换为字符串,然后您尝试将该字符串分配给另一个DateTime变量。那不算。

没有"日期格式"在DateTime变量中。

DateTime只是在内部代表中保留一个日期,与您可能有多年,几个月等的任何概念完全无关。"日期格式"是在显示DateTime时使用的内容。

因此,只需将row.Date分配给Date,即可完成此段代码。

稍后,当需要显示Date时,会应用"日期格式"。