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
答案 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
- 值ù使用日期格式的本地系统设置 - 这意味着程序在不同系统上的行为会有所不同。