在 ASP/VB 中比较时间



>我有 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

相关内容

  • 没有找到相关文章

最新更新