比较ASP / VB中的时间

时间:2012-12-13 15:45:51

标签: asp.net vb.net time compare

我有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. 我将非常感谢你的帮助..谢谢

2 个答案:

答案 0 :(得分:0)

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

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

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

然后按如下方式进行比较:

if time1>time2 then
   'logic 
end if

答案 1 :(得分: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)

但我甚至会以不同的方式做到这一点。如果您试图判断时间是否有效,则可以使用日期时间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