asp.net错误:无法将'System.DateTime'类型的对象强制转换为'System.String'

时间:2012-07-12 22:02:28

标签: c# asp.net datetime

对不起,但这是一个大脑镜头。我搜索了整个互联网,但无法弄清楚这一点 错误: “无法将'System.DateTime'类型的对象强制转换为'System.String'。”

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

3 个答案:

答案 0 :(得分:5)

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

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

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

另请注意,您的原始文件有额外;可能导致您的密码始终过期。

答案 1 :(得分:4)

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

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

答案 2 :(得分:0)

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