2010-07-07 2 views
1

Кажется, что VB6 не может правильно сравнивать даты в некоторых ситуациях. Есть ли какие-либо решения?Фиксация ошибки VB6 Date?

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 

Правильный вывод должен быть:

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

но реальный выход:

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

Есть ли способ обойти это, или есть ли способ избежать этой ситуации (что бы это ни было)?

ответ

5

Вы должны использовать функцию DateDiff. Он может быть адаптирован к любому уровню точности, который вам нужен.

http://www.vb6.us/tutorials/learn-howto-use-visual-basic-datediff-function

+0

Вау, это легко исправить. Хотелось бы, чтобы вы не использовали его, но я рад, что он есть. Благодаря! – derekerdmann

0

«Рассматривать как двойников ваши даты», которые они находятся за сценой

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

Да, это сработает, но мне нравится решение, которое не требует кастинга. – derekerdmann

+0

Хорошо, тогда у вас есть датифф. Подписание дат 'Date - Date' неявно ливается в' Double', try'? typename (date1-date2) 'в непосредственном окне. Это похоже на то, что 'Date = Date' неявно передается в' Boolean'! :-)) – wqw

Смежные вопросы