我在问题中看到了几个类似的头衔,但他们专注于不同的观点。
我想问的是,
我正在尝试比较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')进行比较时现在()
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
它返回:FALSE。它应该返回TRUE,不是吗?
If startDate > Now() Then
do something....
End If
返回:TRUE。它应该返回FALSE,不是吗?
If endDate < Now() Then
do something....
End If
但是在这里,它返回正确。我的意思是这返回FALSE,它应该返回。
这太奇怪了。我检查了所有这些变量的值及其比较结果。价值观看起来很好,没什么好看的。但是当我比较startDate和Now()时,为什么startDate的行为就像它的greaather而不是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
还尝试了上面的一些嵌套paranthesis。但没有运气。
他们都没有工作。
这个问题在最近几个小时就蚕食了我的大脑。
希望明确解释。
寻找建议,
提前致谢!
编辑:现在()是2013-09-05 12:30 PM
答案 0 :(得分:5)
尝试使用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
答案 1 :(得分:2)
我想回答我自己的问题,以帮助有同样问题的人。
当我比较它时
If FormatDateTime(CDate(startDate)) > FormatDateTime(CDate(Now())) Then
Do something...
End If
它没有正常工作(这非常奇怪,我仍然没有得到它!)
然而,当我删除FormatDateTime时,就像这样:
If CDate(startDate) > CDate(Now()) Then
Do something...
End If
返回正确的值。
我不知道改变了什么但只能说“按预期完成”。
由于
答案 2 :(得分:1)
你应该尝试使用CDate()
进行投射CDate识别日期文字和时间文字以及属于可接受日期范围内的一些数字。将数字转换为日期时,整数部分将转换为日期。从午夜开始,该数字的任何小数部分都将转换为一天中的某个时间。
您还可以从here找到一些内容。
希望有所帮助