经典的Asp日期比较无法正常工作

时间:2013-09-05 19:21:02

标签: asp-classic

我在问题中看到了几个类似的头衔,但他们专注于不同的观点。

我想问的是,

我正在尝试比较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

3 个答案:

答案 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找到一些内容。

希望有所帮助