0

我想在 if 语句中使用多个运算符,例如 =、>、&&。如果(strAuthReqDate == null && strDate < strExpectedSubDate),我只想在此条件为真时发送电子邮件。所以我认为我的“小于运算符”是错误的,请让我知道我在这里做错了什么。谢谢

这是我的代码:

foreach (GridViewRow gr in GridView1.Rows)
{
    CheckBox cb = (CheckBox)gr.FindControl("chkItem");
    if (cb.Checked)
    {
        // string strID = gr.Cells[0].Text;
        string strExpectedSubDate = gr.Cells[3].Text;
        string strAuthReqDate = gr.Cells[8].Text;
        string strDate = Convert.ToString(System.DateTime.Now);
        if (strAuthReqDate == null && strDate < strExpectedSubDate)
        {
            send email();
        }
    }
 }
4

4 回答 4

2

尝试使用此代码比较日期

DateTime strExpectedSubDate = DateTime.ParseExact(gr.Cells[3].Text, dateformat);
DateTime strAuthReqDate = DateTime.ParseExact(gr.Cells[8].Text, dateformat);
DateTime strDate = System.DateTime.Now;
if (strAuthReqDate == null && strDate < strExpectedSubDate)
{
}
于 2012-11-11T22:44:20.437 回答
2

首先,Cells[i].Text永远不会为空,因此您应该使用String.IsNullOrWhiteSpce甚至更好,尝试将其转换为 a DateTime

您不能比较字符串并期望它们被视为 DateTimes,C# 不是 VB6。所以首先将它们转换为日期时间:

DateTime ExpectedSubDate;
string strExpectedSubDate = gr.Cells[3].Text;
if(DateTime.TryParse(strExpectedSubDate, out ExpectedSubDate))
{
    DateTime AuthReqDate;
    string strAuthReqDate = gr.Cells[8].Text;
    if(!DateTime.TryParse(strAuthReqDate, out AuthReqDate))
    {
        if(DateTime.Now < ExpectedSubDate)
        {
            SendMail();
        }
    }
}
于 2012-11-11T22:51:00.447 回答
1

您的代码比较文本日期,而不是实际日期。您需要比较 DateTime 对象才能使其按预期工作!

于 2012-11-11T22:38:02.110 回答
1

这是因为 strDate 和 strExpectedSubDate 是字符串。所以你不能使用小于运算符来比较它们

于 2012-11-11T22:38:53.520 回答