1

我有 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. 感谢您的帮助..谢谢

4

2 回答 2

0

看起来您正在从阅读器加载数据之前进行解析。

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)

但我什至会做不同的事情。如果您想判断时间是否有效,可以使用 datetime 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
于 2012-12-13T17:13:50.887 回答
0

好像您正在将字符串与日期数据类型进行比较。

确保将两者都转换为日期数据类型,如下所示。注意秒和“AM”之间的空格。

time1=CDate("3:19:40 AM")
time2=CDate("3:10:40 AM")

然后进行如下比较:

if time1>time2 then
   'logic 
end if
于 2012-12-13T16:19:57.537 回答