标题:日期选择器之比较大小问题!
只看楼主
月夜NO风
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2008-6-29
结帖率:100%
 问题点数:0 回复次数:11 
日期选择器之比较大小问题!
做的一个订单查询系统,利用JAVASCRIPT的日期选择器输入日期,这里没有问题。
但是如果我要将两个日期作对比大小,则出问题。
代码如下:
<%   
IF Request.Form("PurDAY1")>Request.Form("PurDAY2") then   
response.write "<script language=""javascript"">"
response.write "alert('开始时间不能大于结束时间!')"
response.write "</script>"
End IF   
%>
如上代码,如果PurDAY1日期是2008-8-4,PurDAY2日期是2008-8-10或以后,就会比较出错。
就是程序会认为:8-4 > 8-10  从而无法作出正确查询!
为什么会这样?有什么解决方法没有?
搜索更多相关主题的帖子: response write PurDAY 订单 系统 
2008-08-04 09:20
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
得分:0 
IF DateDiff("d",CDate(Request.Form("PurDAY1")),CDate(Request.Form("PurDAY2")))>0 then   
response.write "<script language=""javascript"">"
response.write "alert('开始时间不能大于结束时间!')"
response.write "</script>"
End IF
时间日期不能直接比较要用DateDiff函数来进行比较。
2008-08-04 09:44
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
得分:0 
这里用DateDiff来求得两个日期之间相差的天数
如果PurDAY1大于PurDAY2则会返回一个大于0的正整数的天数
反之则会返回负整数。
2008-08-04 09:46
月夜NO风
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2008-6-29
得分:0 
查了一下DATEDIFF,不明白版主的CDate是什么,会报错!类型不匹配!如果去掉CDate,如下,则报错,缺少 then  ...可是明明有了啊
<%   
IF DateDiff("d",Request.Form("PurDAY1"),Request.Form("PurDAY2")) >0  then   
response.write "<script language=""javascript"">"
response.write "alert('开始时间不能大于结束时间!')"
response.write "</script>"
End IF
%>
2008-08-04 10:55
月夜NO风
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2008-6-29
得分:0 
如果下面这样科不报缺少THEN,但是我发现要把>0改为<0才能正常比较,而且一跨年就比不出了。
要用“Y”吗?
<% IF DateDiff("d",Request.Form("PurDAY1"),Request.Form("PurDAY2")) < 0  then  %>
<%response.write "<script language=""javascript"">"%>
<%response.write "alert('开始时间不能大于结束时间!')"%>
<%response.write "</script>"%>
<%End IF%>

[[it] 本帖最后由 月夜NO风 于 2008-8-4 11:15 编辑 [/it]]
2008-08-04 11:13
octillion
Rank: 1
等 级:新手上路
帖 子:195
专家分:0
注 册:2008-7-24
得分:0 
CDate 函数
返回表达式,此表达式已被转换为 Date 子类型的 Variant。

CDate(date)
date 参数是任意有效的日期表达式。

说明
IsDate 函数用于判断 date 是否可以被转换为日期或时间。CDate 识别日期文字和时间文字,以及一些在可接受的日期范围内的数字。在将数字转换为日期时,数字的整数部分被转换为日期,分数部分被转换为从午夜开始计算的时间。

CDate 根据系统的区域设置识别日期格式。如果数据的格式不能被日期设置识别,则不能判断年、月、日的正确顺序。另外,如果长日期格式包含表示星期几的字符串,则不能被识别。

下面的示例使用 CDate 函数将字符串转换成日期类型。一般不推荐使用硬件译码日期和时间作为字符串(下面的例子已体现)。而使用时间和日期文字 (如 #10/19/1962#, #4:45:23 PM#)。

MyDate = "October 19, 1962"        ' 定义日期。
MyShortDate = CDate(MyDate)        ' 转换为日期数据类型。
MyTime = "4:35:47 PM"              ' 定义时间。
MyShortTime = CDate(MyTime)        ' 转换为日期数据类型。
2008-08-04 11:52
月夜NO风
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2008-6-29
得分:0 
但是类型不匹配哦,为什么呢,我是用日期选择器选择的,日期是“2008-08-4”这样子的,CDate为什么会类型不匹配的呢?
2008-08-04 15:41
月夜NO风
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2008-6-29
得分:0 
换了MY97的DATE PICKER,日期改为2008-08-05这样也还是不行。
版主,帮帮忙看下。。。。。。。。。
2008-08-05 11:15
leros
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-7-30
得分:0 
类型不匹配,可强制转换一下~
2008-08-05 22:25
月夜NO风
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2008-6-29
得分:0 
CDate不就是转换的函数么???????但是就是这里出错啊。
2008-08-06 11:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-226697-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.552225 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved