我想使用多个运算符,例如=,>,&&在我的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();
}
}
}
答案 0 :(得分: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)
{
}
答案 1 :(得分:2)
首先,Cells[i].Text
永远不会为空,因此您应该使用String.IsNullOrWhiteSpce
甚至更好,尝试将其转换为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();
}
}
}
答案 2 :(得分:1)
您的代码会比较文字日期,而不是实际日期。您需要比较DateTime对象才能使其按预期工作!
答案 3 :(得分:1)
这是因为strDate和strExpectedSubDate是字符串。因此,您无法使用小于运算符
来比较它们