InvalidCastException 将字符串转换为 DateTime

InvalidCastException convert string to DateTime

基本上是尝试读入一个文件并将其从 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);

}

Error message: InvalidCastException Couldn't convert value '8/22/2015 1:19:01 AM' to DateTime in row 2

错误发生在以下行:

var csvData = from row in new CpltData(@file, 1000000, 1000000, "")

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

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

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

DateTime 变量中没有 "date format" 这样的东西。

A DateTime 仅包含一个日期,在内部表示中与您可能拥有的年、月等任何概念完全无关。"date format" 是您在显示 DateTime.

时使用

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

稍后,当需要显示 Date 时,然后 应用 "date format"。