| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦   
共有 562 人关注过本帖
标题:日期选择器之比较大小问题!
收藏  订阅  推荐  打印
月夜NO风
Rank: 2
等级:注册会员
帖子:82
积分:1020
注册:2008-6-29
日期选择器之比较大小问题!

做的一个订单查询系统,利用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  从而无法作出正确查询!
为什么会这样?有什么解决方法没有?
2008-8-4 09:20
yms123
Rank: 12Rank: 12Rank: 12
等级:版主
威望:72
帖子:7967
积分:81334
注册:2004-7-17

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函数来进行比较。

http://www.lxzhcn.net
临时域名:http://yms126.1.suhai.com.cn/
版块版主招募中
网站论坛发帖无问题,欢迎发帖。
2008-8-4 09:44
yms123
Rank: 12Rank: 12Rank: 12
等级:版主
威望:72
帖子:7967
积分:81334
注册:2004-7-17

这里用DateDiff来求得两个日期之间相差的天数
如果PurDAY1大于PurDAY2则会返回一个大于0的正整数的天数
反之则会返回负整数。

http://www.lxzhcn.net
临时域名:http://yms126.1.suhai.com.cn/
版块版主招募中
网站论坛发帖无问题,欢迎发帖。
2008-8-4 09:46
月夜NO风
Rank: 2
等级:注册会员
帖子:82
积分:1020
注册:2008-6-29

查了一下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-8-4 10:55
月夜NO风
Rank: 2
等级:注册会员
帖子:82
积分:1020
注册:2008-6-29

如果下面这样科不报缺少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%>

[ 本帖最后由 月夜NO风 于 2008-8-4 11:15 编辑 ]
2008-8-4 11:13
octillion
Rank: 3Rank: 3
等级:中级会员
帖子:195
积分:2156
注册:2008-7-24

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-8-4 11:52
月夜NO风
Rank: 2
等级:注册会员
帖子:82
积分:1020
注册:2008-6-29

但是类型不匹配哦,为什么呢,我是用日期选择器选择的,日期是“2008-08-4”这样子的,CDate为什么会类型不匹配的呢?
2008-8-4 15:41
月夜NO风
Rank: 2
等级:注册会员
帖子:82
积分:1020
注册:2008-6-29

换了MY97的DATE PICKER,日期改为2008-08-05这样也还是不行。
版主,帮帮忙看下。。。。。。。。。
2008-8-5 11:15
leros
Rank: 1
等级:新手上路
帖子:8
积分:184
注册:2008-7-30

类型不匹配,可强制转换一下~
2008-8-5 22:25
月夜NO风
Rank: 2
等级:注册会员
帖子:82
积分:1020
注册:2008-6-29

CDate不就是转换的函数么???????但是就是这里出错啊。
2008-8-6 11:01
共有 561 人关注过本帖
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.078838 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved