字符串未被识别为有效的日期时间对象

本文关键字:日期 时间 对象 有效 识别 字符串 | 更新日期: 2023-09-27 18:12:20

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;
}

错误信息是

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

字符串未被识别为有效的日期时间对象

你的错误是非常清楚什么是错的:你把一个字符串到datetime列:

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()**;

或将行定义更改为字符串类型