字符串未被识别为有效的DateTime对象

时间:2013-05-06 07:37:05

标签: c# exception datetime try-catch

try
{
    foreach (DataRow row in tempTable.Rows)
    {
        row["Start_Date"] = objUtil.ConvertDate(row["Start_Date"].ToString(), "yyyyMMdd").ToString("MM/dd/yyyy hh:mm:ss").Replace("12:00:00 AM", "").Trim();
        row["End_Date"] = objUtil.ConvertDate(row["End_Date"].ToString(), "yyyyMMdd").ToString("MM/dd/yyyy hh:mm:ss").Replace("12:00:00 AM", "").Trim();
        row["Start_Date_DateTime"] = row["Start_Date"];
        rowCnt++;
    }
    rowCnt = 0;
    foreach (DataRow row in tempTable1.Rows)
    {
        row["Start_Date"] = objUtil.ConvertDate(row["Start_Date"].ToString(), "yyyyMMdd").ToString("MM/dd/yyyy hh:mm:ss").Replace("12:00:00 AM", "").Trim();
        row["End_Date"] = objUtil.ConvertDate(row["End_Date"].ToString(), "yyyyMMdd").ToString("MM/dd/yyyy hh:mm:ss").Replace("12:00:00 AM", "").Trim();
        row["Start_Date_DateTime"] = row["Start_Date"];
        rowCnt++;
    }
    DataView _objdv = new DataView(tempTable);
    _objdv.Sort = "Suite_ID,Start_Date_DateTime ASC";
    DataTable _dt1 = _objdv.ToTable();
    objSuiteRate_Table = _dt1;
    DataView _objdv1 = new DataView(tempTable1);
    _objdv1.Sort = "Suite_ID,Start_Date_DateTime ASC";
    DataTable _dt2 = _objdv1.ToTable();
    objSuiteRate_TableGLB = _dt2;
    objPPCNorm.Connection.Close();
}
catch (Exception ex)
{
    bool rethrow = BusinessLayerExceptionHandler.HandleException(ref ex);
    throw;
}

错误讯息是

  

无法存储< 08-30-2011 12:00:00>在DateTime列中。期望的类型   是DateTime对象

1 个答案:

答案 0 :(得分:4)

您的错误非常清楚:您将字符串放入日期时间列:

objUtil.ConvertDate(row["Start_Date"].ToString(), "yyyyMMdd").ToString("MM/dd/yyyy hh:mm:ss").Replace("12:00:00 AM", "").Trim();

将返回一个字符串。因此,您应该删除格式化部分或使列成为字符串类型:

删除格式化部分,并在显示该行的组件中进行格式化:

objUtil.ConvertDate(row["Start_Date"].ToString(), "yyyyMMdd"); //**.ToString("MM/dd/yyyy hh:mm:ss").Replace("12:00:00 AM", "").Trim()**;

或将您的行定义更改为string type。