2010-07-07 4 views
1

Il semble que VB6 ne peut pas comparer correctement les dates dans certaines situations. Y a-t-il des solutions à cela?Correction du bug de date VB6?

Private Sub CheckDate() 

    date1 = #7/6/2010 2:00:00 PM# 
    Debug.Print "Date 1: " + CStr(date1) 

    date2 = DateAdd("h", -8, #7/6/2010 10:00:00 PM#) 
    Debug.Print "Date 2: " + CStr(date2) 

    Debug.Print "Equal? " + CStr(date1 = date2) 

End Sub 

La sortie correcte devrait être:

Date 1: 7/6/2010 2:00:00 PM 
Date 2: 7/6/2010 2:00:00 PM 
Equal? True 

mais la production réelle est:

Date 1: 7/6/2010 2:00:00 PM 
Date 2: 7/6/2010 2:00:00 PM 
Equal? False 

Y at-il moyen de contourner cela, ou est-il un moyen d'éviter cette situation (peu importe ce que c'est)?

Répondre

0

"Traiter vos dates comme doubles" qu'ils sont derrière la scène

Debug.Print "Equal? " + CStr(Abs(date1 - date2) < 0.000000001) 
+0

Ouais, ça marcherait, mais j'aime la solution qui n'a pas besoin d'être moulée. – derekerdmann

+0

Ok, alors vous avez datiff. La soustraction de dates 'Date - Date' est implicitement castée en' Double', essayez '? typename (date1-date2) 'dans la fenêtre immédiate. C'est comme penser que 'Date = Date' est implicitement casté en' Boolean'! :-)) – wqw

Questions connexes