抱歉,这是一次脑残。我在整个互联网上搜索了很久,但是还是想不明白。
错误:"无法将类型为 'System.DateTime' 的对象转换为类型 'System.String'。"
if (oDbDataReader.GetString(2) == DateTime.Now.AddDays(-90).ToShortDateString()) //DateCreated
{
oEmp.PasswordCompliance = "Password expired";
}
抱歉,这是一次脑残。我在整个互联网上搜索了很久,但是还是想不明白。
if (oDbDataReader.GetString(2) == DateTime.Now.AddDays(-90).ToShortDateString()) //DateCreated
{
oEmp.PasswordCompliance = "Password expired";
}
有两个问题,第一个是你在进行等式比较,如果有人在三个月后检查,这将不会触发。第二个问题是你可能在数据库中存储了一个 Date
或 DateTime
,导致你调用 GetString
失败。
在这种情况下,使用以下方法(没有理由使用字符串)。
if (oDbDataReader.GetDateTime(2) <= DateTime.Now.AddDays(-90))
;
,可能导致您的密码始终过期。第二列的类型是什么?如果是DateTime
类型,您应该尝试使用DbDataReader.GetDateTime方法。
if (oDbDataReader.GetDateTime(2) < DateTime.Now.AddDays(-90))
{
oEmp.PasswordCompliance = "Password expired";
}
阅读器中位置2列的值是DateTime类型,而不是字符串。因此GetString调用失败。
if
条件语句末尾去掉分号。 - Lee