2010-01-05 143 views
1

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 
+1

label1從哪裏來?爲什麼你只能將日期類型轉換爲字符串才能在字符串上調用DateDiff(這會強制它將字符串轉換回日期)?給我們多個版本的Command1_Click沒有什麼幫助,向我們展示一個最接近你認爲應該工作的東西。 – AnthonyWJones 2010-01-05 10:31:15

回答

2

如果日期從DB比現在更早拉,則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 
+0

Raven的代碼應該適合你。爲了調試的目的,我會添加和其他語句,如Else MsgBox DateDiff(「n」,date1,Now)和「分鐘差異」 – jac 2010-01-05 23:01:48

+0

感謝您的回覆得到它排序。 – user243732 2010-01-07 05:06:41

2

不使用DateDiff -function將直接計算與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轉換是StringDate - 值使用日期格式的本地系統設置 - 這意味着,該方案將表現不同的不同系統。