ASP.NET错误:无法将类型为'System.DateTime'的对象转换为类型'System.String'。

4

抱歉,这是一次脑残。我在整个互联网上搜索了很久,但是还是想不明白。


错误:"无法将类型为 'System.DateTime' 的对象转换为类型 'System.String'。"
if (oDbDataReader.GetString(2) == DateTime.Now.AddDays(-90).ToShortDateString())       //DateCreated
{
    oEmp.PasswordCompliance = "Password expired";
}

在你的 if 条件语句末尾去掉分号。 - Lee
你可以使用DateTime.Now.Subtract(TimeSpan.FromDays(90))代替.AddDays(-90)。 - Misha
3个回答

5

有两个问题,第一个是你在进行等式比较,如果有人在三个月后检查,这将不会触发。第二个问题是你可能在数据库中存储了一个 DateDateTime,导致你调用 GetString 失败。

在这种情况下,使用以下方法(没有理由使用字符串)。

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

请注意,您原来的代码中有一个多余的 ;,可能导致您的密码始终过期。

4

第二列的类型是什么?如果是DateTime类型,您应该尝试使用DbDataReader.GetDateTime方法。

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

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接