【问题标题】:asp.net error: Unable to cast object of type 'System.DateTime' to type 'System.String'asp.net 错误:无法将“System.DateTime”类型的对象转换为“System.String”类型
【发布时间】:2012-07-12 22:02:28
【问题描述】:

抱歉,这是一个脑残。我已经搜索了整个互联网,但无法弄清楚这一点。
错误: “无法将 'System.DateTime' 类型的对象转换为 'System.String' 类型。 "

if (oDbDataReader.GetString(2) == DateTime.Now.AddDays(-90).ToShortDateString())       //DateCreated
{
    oEmp.PasswordCompliance = "Password expired";
}

【问题讨论】:

  • 删除 if 条件末尾的分号
  • 不使用 .AddDays(-90),您可以这样做:DateTime.Now.Subtract(TimeSpan.FromDays(90))

标签: c# asp.net datetime


【解决方案1】:

两个问题,首先您要比较是否相等,如果有人在 3 个月后检查,则不会触发。其次,您可能在数据库中存储了DateDateTime,导致您对GetString 的调用失败。

改为使用以下内容(在这种情况下没有理由使用字符串)。

if (oDbDataReader.GetDateTime(2) <= DateTime.Now.AddDays(-90))

另请注意,您的原始密码有一个额外的;,这可能会导致您的密码始终过期。

【讨论】:

    【解决方案2】:

    列 [2] 的类型是什么?如果是DateTime,你应该试试DbDataReader.GetDateTime

    if (oDbDataReader.GetDateTime(2) < DateTime.Now.AddDays(-90)) 
    {
        oEmp.PasswordCompliance = "Password expired";
    }
    

    【讨论】:

      【解决方案3】:

      阅读器中位置 2 列中的值是 DateTime,而不是字符串。所以 GetString 调用失败。

      【讨论】:

        猜你喜欢
        • 2023-04-03
        • 2017-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-03
        • 2012-09-07
        • 1970-01-01
        • 2014-03-14
        相关资源
        最近更新 更多