3

我在我的问题中看到了几个类似的标题,但他们关注的重点不同。

我想问的是,

我正在尝试比较 2 个日期。是的,听起来超级简单!

这是问题:

我有两个变量,我正在尝试将这两个变量与 Now() 进行比较。

就像 :

If startDate < Now() and endDate> Now() Then 
do something....
End If

但问题是,当我将 startDate(即('2013-08-08 09:30 AM')与 Now() 和 endDate(即'2013-09-09 02:30 PM')与 Now() 进行比较时

startDate = '2013-08-08 09:30 AM' 'This value comes from db, I have not typed it. Just trying to show  what it has as a  value.

endDate = '2013-09-09 02:30 PM' 'This value comes from db, I have not typed it. Just trying to show what it has as a  value.

当我比较这两个日期变量时:

 If startDate  < Now()  Then 
    do something....
End If

它返回:假。它应该返回 TRUE,不是吗?

If startDate  > Now()  Then 
        do something....
    End If

它返回:TRUE。它应该返回 FALSE,不是吗?

 If endDate  < Now()  Then 
        do something....
    End If

但在这里,它返回正确。我的意思是这会返回 FALSE,这是它应该返回的。

这太奇怪了。我检查了所有这些变量的值及其比较结果。价值观看起来不错,没有什么奇怪的。但是当我比较 startDate 和 Now() 时,为什么 startDate 的行为比 Now() 更重要,我无法理解。

我试过了 :

     If FormatDateTime(startDate) < FormatDateTime(Now()) Then do something
     If FormatDateTime(CDate(startDate)) < FormatDateTime(CDate(Now())) Then do something
     If DateValue(startDate) < DateValue(Now()) Then do something

还尝试了上述一些嵌套括号。但没有运气。

他们都没有工作。

这个问题只是在过去几个小时里蚕食了我的大脑。

希望它清楚地解释。

寻找建议,

提前致谢!

编辑:NOW() 是 2013-09-05 12:30 PM

4

3 回答 3

6

尝试使用 DateDiff() 函数。这将返回您想要的任何时间间隔(秒、分钟、天等)的差异。然后,您可以轻松地将其与您正在检查的值进行比较。

链接: http: //msdn.microsoft.com/en-us/library/b5xbyt6f (v=vs.90).aspx

您还可以尝试使用 CDate() 函数来查看将其转换为日期是否会正确执行。

If CDate(startDate) < Now() and CDate(endDate) > Now() Then 
    do something....
End If
于 2013-09-05T19:34:45.897 回答
2

我想回答我自己的问题,以帮助遇到同样问题的人。

当我比较它

If FormatDateTime(CDate(startDate)) > FormatDateTime(CDate(Now())) Then 
   Do something...
End If

它没有正常工作(这非常奇怪,我仍然没有得到它!)

但是,当我删除 FormatDateTime 时,如下所示:

If CDate(startDate) > CDate(Now()) Then 
       Do something...
    End If

它返回正确的值。

我不知道发生了什么变化,但只能说 'Went through as expected' 。

谢谢

于 2013-09-05T20:23:34.500 回答
1

您应该尝试使用 CDate() 进行投射

CDate 识别日期文字和时间文字以及一些在可接受日期范围内的数字。将数字转换为日期时,整数部分将转换为日期。数字的任何小数部分都将转换为一天中的时间,从午夜开始。

You can also find something from here.

hope it helps

于 2014-01-16T19:21:14.090 回答