我正在尝试比较开始时间和结束时间值,以确保结束时间永远不会早于开始时间。如果时间较早,则会显示一条错误消息。但我永远无法让它发挥作用。如果可能的话,请帮忙。非常感谢。
下面是我的vb.net代码:
Private Sub TimeChk(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim Time1 As Integer
Time1 = bkDDlist_strTime.SelectedItem.Value
Dim Time2 As Integer
Time2 = bkDDlist_endTime.SelectedItem.Value
Dim msg As String
If (Time2 < Time1) Then
msg = "Invalid End Time"
End If
End Sub
下拉列表HTML代码。开始时间标签是"0";bkDDlistrongtrTime";并且结束时间是"0";bkDDlist_endTime";
下拉列表代码
按照建议更改代码后。
Sub TimeChk()
Dim Time1 = Convert.ToDouble(bkDDlist_strTime.SelectedItem.Value)
Dim Time2 = Convert.ToDouble(bkDDlist_endTime.SelectedItem.Value)
If (Time2 < Time1) Then
MessageBox.Show("Invalid End Time")
End If
End Sub
<asp:CompareValidator runat="server" ID="CompareValidator1"
ControlToCompare="bkDDlist_strTime" ControlToValidate="bkDDlist_endTime"
Display="Dynamic" Operator="GreaterThan" Type="Double" Text="Invalid End
Time"></asp:CompareValidator>
VB代码:
Sub TimeChk()
CompareValidator1.ValueToCompare = bkDDlist_endTime.SelectedItem.Value
End Sub
只有一个项实际具有Value。使用值作为小时数,使用文本作为时间的漂亮表示,如下图所示:
<asp:ListItem Value="8" >08:00</asp:ListItem>
<asp:ListItem Value="8.5">08:30</asp:ListItem>
...
并将您的Time1
、Time2
作为Double
使用Time1 = Convert.ToDouble(bkDDlist_strTime.SelectedItem.Value)
,因为现在。Value是字符串
然后,你不仅可以用Time2 < Time1
来计算出时间是错误的(如果是,只需交换它们,不要给用户错误。试着编程对用户有帮助,而不是一直给用户错误消息(,而且你还可以通过Time2 - Time1
:来计算出林特瓦尔有多长
17 - 9.5 = 7.5 hours
1700 - 930 = 770 <-- it's not anything, not minutes, not hours, no sense to use it