比较两个日期时间

时间:2010-01-05 08:26:03

标签: vb6

label1显示我通过查询从数据库获取的最后一个事务日期/时间。 label2是系统日期/时间。我有一个执行命令按钮的计时器,之后我想检查label1中的日期/时间是否小于5分钟。如果是这样,那么我想要按摩。

但我不知道为什么我的代码无法执行此功能。 任何帮助将不胜感激。

Private Sub Command1_Click()
    Dim date1 As Date
    Dim date2 As Date

    date1 = Format(Now, "yyyy/mm/dd hh:mm:ss")
    date2 = Format(label1, "yyyy/mm/dd hh:mm:ss")
    If DateDiff("n", date1, date2) < 2 Then
       MsgBox ("Not Vending")
    End If
End Sub

我也试过了:

Private Sub Command1_Click()
    Dim date1 As Date
    Dim label1 As Date

    date1 = Format(Now, "yyyy/mm/dd hh:mm:ss")
    date2 = label1
    If DateDiff("m", Now, date1) > DateDiff("m", Now, label1) Then
       MsgBox ("Not Vending")
    End If
End Sub

以及:

Private Sub Command1_Click()  
    If DateDiff("n", Now, label1) > 5 Then
       MsgBox ("Not Vending")
    End If
End Sub

2 个答案:

答案 0 :(得分:3)

如果从DB中提取的日期早于Now,则DateDiff将始终返回负数,如果您将Now作为第二个参数传递。看起来你正在检查时间的流逝,所以我假设DB中的日期总是在Now之前。您需要切换现在的顺序和比较的日期(DateDiff("n", date1, Now)而不是DateDiff("n", Now, date1)

Private Sub Command1_Click()
    Dim date1 As Date
    date1 = CDate(Label1.Caption)
    If DateDiff("n", date1, Now) < 5 Then
       MsgBox ("Not Vending")
    End If
End Sub

答案 1 :(得分:2)

不使用DateDiff - 函数的另一种方法是使用Date - 变量进行直接计算 - 因为这些变量实际上是Doubles

Private Sub Command1_Click()
    Dim date1 As Date
    date1 = CDate(Label1.Caption)
    '#12:05:00 AM# is representing a value of 5 Minutes in the Date-datatype
    If (date1 - Now) < #12:05:00 AM# Then
       MsgBox ("Not Vending")
    End If
End Sub

如果您想查看时差,也可以使用

Private Sub Command1_Click()
    Dim date1 As Date
    date1 = CDate(Label1.Caption)
    '#12:05:00 AM# is representing a value of 5 Minutes in the Date-datatype
    If Abs(date1 - Now) < #12:05:00 AM# Then
       MsgBox ("Not Vending")
    End If
End Sub

Abs(date1 - Now)将时差返回为Date - 值

顺便说一下。 date1 = Format(Now, "yyyy/mm/dd hh:mm:ss")没有意义。由于Now返回Date - 值,Format会将Date - 值转换为String,并将其分配给date1转换为String 1}}回到Date - 值ù使用日期格式的本地系统设置 - 这意味着程序在不同系统上的行为会有所不同。