我如何使用" AND"在if else条件下。
第一个条件:(Val(TextBox9.Text) > Val(time.Text))
第二个条件:
((Format(CDate(Strings.Right(TextBox9.Text.Trim, 11)))) >
(Format(CDate(Strings.Right(time.Text.Trim, 11)))))
我的语句条件有问题,它总是在第一个条件成立时执行。我希望我的条件在我的两个条件成立时执行,我的大问题是当我的第一个条件变为真且我的第二个条件为假时它仍然执行哪个是错误的,输出应该是"第二个条件是假的"
If (Val(TextBox9.Text) > Val(time.Text)) AndAlso
((Format(CDate(Strings.Right(TextBox9.Text.Trim, 11)))) >
(Format(CDate(Strings.Right(time.Text.Trim, 11))))) Then
Console.writeline("Execute both condition is true")
else
Console.writeline("Second Condition is false")
end if
答案 0 :(得分:0)
如果您在诊断条件问题时遇到问题,请将它们分成几行,以帮助您更好地了解您所比较的内容。例如,你可以这样做:
Dim firstCompare = Val(TextBox9.Text) > Val(Time.Text)
Dim formattedTB9 = Format(CDate(Strings.Right(TextBox9.Text.Trim, 11)))
Dim formattedTime = Format(CDate(Strings.Right(Time.Text.Trim, 11)))
Console.WriteLine(String.Format("{0} > {1}", formattedTB9, formattedTime))
Dim secondCompare = formattedTB9 > formattedTime
If (firstCompare) AndAlso (secondCompare) Then
Console.WriteLine("Execute both condition is true")
Else
Console.WriteLine("One of the conditions is false")
End If
现在查看您的代码,您确定要比较刚从文本框转换的格式化日期和时间字符串吗?现在事情已经解决,利用调试器来确定您要比较的值,并专注于将其调整为您想要的。在比较对象时使用正确的数据类型,并确保您了解Val
和CDate
等函数的工作原理。
答案 1 :(得分:-1)
这不是比较两个日期和时间的好方法。您应首先比较日期(不是转换为字符串的日期),并且只有比较时间相同。那是因为如果一个日期比其他日期更大或更小,那么时间并不重要。但是当它们相同时,时间就很重要。而且你不应该比较字符串,因为当它形成mm / dd / yyyy时,数月和日对比数年来更重要。
If CDate(Strings.Right(TextBox9.Text.Trim, 11))>CDate(Strings.Right(time.Text.Trim, 11)) Then
Console.writeline("Date1 is bigger")
elseif CDate(Strings.Right(TextBox9.Text.Trim, 11))=CDate(Strings.Right(time.Text.Trim, 11))
If Val(TextBox9.Text) > Val(Time.Text) Then
Console.writeline("Date1 is bigger")
elseif Val(TextBox9.Text) = Val(Time.Text)
Console.writeline("Dates are equal")
else
Console.writeline("Date1 is smaller")
end if
else
Console.writeline("Date1 is smaller")
end if