如果使用两个条件,我会困扰我的情况

时间:2014-06-10 02:00:45

标签: vb.net

我如何使用" 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

2 个答案:

答案 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

现在查看您的代码,您确定要比较刚从文本框转换的格式化日期和时间字符串吗?现在事情已经解决,利用调试器来确定您要比较的值,并专注于将其调整为您想要的。在比较对象时使用正确的数据类型,并确保您了解ValCDate等函数的工作原理。

答案 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