在文本框中比较当前时间与时间

时间:2014-09-01 16:24:25

标签: vb.net forms time timer basic

如何将当前时间与格式示例“07:00”

中的时间进行比较

我想查看当前时间以及当前时间间隔为07:00 - 07:45,以便在文本框中显示消息。

我目前的工作

Public Class Form1
    Dim curtime As String
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        tmrNow.Enabled = True
        If curtime < "07:00" And curtime > "07:45" Then
            lblPeriod.Text = "Time is in range "
        End If
    End Sub

    Private Sub tmrNow_Tick(sender As Object, e As EventArgs) Handles tmrNow.Tick
        txtNow.Text = DateAndTime.Now.ToString("hh:mm")
        curtime = txtNow.Text
    End Sub
End Class

1 个答案:

答案 0 :(得分:1)

DateTime是.NET中的一个实际类型,专门用于评估时间和日期。另外,您在Form加载中设置lblPeriod,只发生一次,可能在Timer关闭之前设置当前日期时间变量。

Private curDT as DateTime

Private Sub tmrNow_Tick(....
    curDt = DateTime.Now
    txtNow.Text = curDt.ToString("hh:mm")

    ' evaluate the time:
    If curDt.Hour = 7 AndAlso (curDt.Minute >= 0 And curDt.Minute <= 45) Then
          lblPeriod.Text = "Time is in range "
    End If

End Sub

Strings是不同的类型,不适合进行数学运算或DateTime比较。代码如下:

 If curtime < "07:00" And curtime > "07:45" Then

将失败,因为"07:00"不是时间值 - 它是文本(字符串),它只是时间格式。由于模式的原因,你的大脑将其解释为时间,但对于计算机来说它没有“Ziggy”或“Apple”那么重要。这就是为什么我们使用DateTime变量及其提供的属性来检查/发送时间(小时,分钟,秒等)或日期(月,日,年)。

类似地,ToString("hh:mm")将我们的DateTime变量转换为模式中的字符串,以便用户的大脑(希望)可以解释正在发生的事情。