>我有 2 列,一列用于开始时间,另一列用于结束时间。它们都属于nvarchar
类型,以便我可以比较它们。
我有一个文本框,它将从用户那里接收时间,并将自动回发以检查时间是否有效。
Dim compared_time_1 As DateTime
Dim compared_time_2 As DateTime
Dim select_time As SqlCommand
select_time = New SqlCommand("select Start_Time , End_Time from Clinic_Schedule where Schedule_no = @sch_no", appt_DB_1)
select_time.Parameters.AddWithValue("@sch_no", Sch_no)
Dim time_rdr As SqlDataReader
time_rdr = select_time.ExecuteReader()
While time_rdr.Read
compared_time_1 = DateTime.Parse(start_time_1)
compared_time_2 = DateTime.Parse(end_time_1)
start_time_1 = time_rdr(0).ToString
end_time_1 = time_rdr(1).ToString
If appt_time_txt0.Text >= start_time_1 And appt_time_txt0.Text <= end_time_1 Then
date_valid_lbl0.Visible = True
date_valid_lbl0.Text = "*Valid Time"
Else
time_valid_lbl0.Visible = True
time_valid_lbl0.Text = "*Not Valid Time"
End If
End While
time_rdr.Close()
我不知道我的逻辑 XD 是否有问题。这些列中填写的数据采用以下格式00:00AM or 00:00PM.
:我将感谢您的帮助..谢谢
似乎您正在将字符串与日期数据类型进行比较。
确保将两者转换为日期数据类型,如下所示。请注意秒和"AM"之间的空格。
time1=CDate("3:19:40 AM")
time2=CDate("3:10:40 AM")
然后按如下方式执行比较:
if time1>time2 then
'logic
end if
看起来您正在从读取器加载数据之前进行解析。
compared_time_1 = DateTime.Parse(start_time_1)
compared_time_2 = DateTime.Parse(end_time_1)
start_time_1 = time_rdr(0).ToString
end_time_1 = time_rdr(1).ToString
应该是
start_time_1 = time_rdr(0).ToString
end_time_1 = time_rdr(1).ToString
compared_time_1 = DateTime.Parse(start_time_1)
compared_time_2 = DateTime.Parse(end_time_1)
但我什至会以不同的方式做这件事。 如果尝试判断时间是否有效,可以使用日期时间 TryParse 方法。 也许一些重构也可能对您有所帮助。 最后,请注意,如果计划项目有可能在午夜之前开始并在第二天午夜之后结束,则比较时间可能会出现问题。
Sub ReadingData()
'initializing reader stuff here...
Dim dtStart As DateTime, dtEnd As DateTime
If DateTime.TryParse(time_rdr(0).ToString, dtStart) = False Then
HandleInvalidTime()
End If
If DateTime.TryParse(time_rdr(1).ToString, dtEnd) = False Then
HandleInvalidTime()
End If
'Closing out reader stuff here...
HandleValidTime(dtStart, dtEnd)
End Sub
Sub HandleValidTime(TheStartTime As DateTime, TheEndTime As DateTime)
'Do Stuff
End Sub
Sub HandleInvalidTime()
'Do Stuff
End Sub