抱歉,这是脑残。我已经搜索了整个互联网,但无法弄清楚这一点。
错误: “无法将 'System.DateTime' 类型的对象转换为 'System.String' 类型。”
if (oDbDataReader.GetString(2) == DateTime.Now.AddDays(-90).ToShortDateString()) //DateCreated
{
oEmp.PasswordCompliance = "Password expired";
}
两个问题,首先你要比较平等,如果有人在 3 个月后检查,这不会触发。其次,您可能正在数据库中存储Date
or DateTime
,导致调用GetString
失败。
请改用以下内容(在这种情况下没有理由使用字符串)。
if (oDbDataReader.GetDateTime(2) <= DateTime.Now.AddDays(-90))
另请注意,您的原始文件有一个额外的;
可能导致您的密码始终过期。
列 [2] 的类型是什么?如果是,DateTime
您应该尝试DbDataReader.GetDateTime
if (oDbDataReader.GetDateTime(2) < DateTime.Now.AddDays(-90))
{
oEmp.PasswordCompliance = "Password expired";
}
阅读器中位置 2 列中的值是 DateTime,而不是字符串。因此 GetString 调用失败。