判断日期型.

tianqwwq 2004-04-02 12:40:59
用javascript怎么判断客户输入的是不是日期型.
...全文
13 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
PPLUNCLE 2004-04-02
function checkdata(){
if (document.form.kssj.value.length==0){
alert("开始时间不能为空!");
document.form.kssj.focus();
return false;
}
kssj=document.form.kssj.value
var re=/^(\d{4})-(\d{1,2})-(\d{1,2})$/
if(!re.test(kssj)){
alert("开始时间输入格式错误");
document.form.kssj.focus();
return false;
}
var r=kssj.match(re)
var d=new Date(r[1],r[2]-1,r[3])
if(!(d.getFullYear()==r[1]&&d.getMonth()==r[2]-1&&d.getDate()==r[3])){
alert("开始时间输入格式错误");
document.form.kssj.focus();
return false;
}
if (document.form.jssj.value.length==0){
alert("结束时间不能为空!");
document.form.jssj.focus();
return false;
}
jssj=document.form.jssj.value
var re=/^(\d{4})-(\d{1,2})-(\d{1,2})$/
if(!re.test(jssj)){
alert("结束时间输入格式错误");
document.form.jssj.focus();
return false;
}
var r=jssj.match(re)
var d=new Date(r[1],r[2]-1,r[3])
if(!(d.getFullYear()==r[1]&&d.getMonth()==r[2]-1&&d.getDate()==r[3])){
alert("结束时间输入格式错误");
document.form.jssj.focus();
return false;
}
kssj = document.form.kssj.value
jssj = document.form.jssj.value
kssj = kssj.replace(/\-/g,"\/");
jssj = jssj.replace(/\-/g,"\/");
if ((new Date(kssj) > new Date(jssj))){
alert("开始时间不能大于结束时间!");
document.form.jssj.focus();
return false;
}
return true
}
回复
vvfish119 2004-04-02
……你不如给他个下拉菜单让用户选择了
回复
anddytang 2004-04-02
用vbscript写好前台的函数,再用javascript调用就可以了!
回复
zjwz001 2004-04-02
<%
'日期函数包DataPackage
%>
<script language="javascript">
function IsDateString(Str)
<!--
{
// 校验是否YYYY-MM-DD格式的日期型数据,返回值为True成功,否则返回False
// 如果传递的是空字符串则返回False
// 定义分隔符
var sSplit="-"

var iYearPos=Str.indexOf(sSplit);
if (iYearPos==-1) return false;

var iMonthPos=Str.indexOf(sSplit,iYearPos+1);
if (iMonthPos==-1) return false;

// 分离出年份
sYear=Str.substr(0,iYearPos);
// 分离出月份
sMonth=Str.substr(iYearPos+1,iMonthPos-iYearPos-1);
//月份长度为二
if (sMonth.length!=2) return false;
if (sMonth.substr(0,1)=="0") sMonth=sMonth.substr(1);
// 分离出日期
sDay=Str.substr(iMonthPos+1);
//日长度为二
if (sDay.length!=2) return false;
if (sDay.substr(0,1)=="0") sDay=sDay.substr(1);
// 年份是否数字?
if (isNaN(sYear)) return false;
var iYear=parseInt(sYear);
// 年份是否整数?
if (sYear!=iYear) return false;
// 年份是否在1000-9999之间?
if (iYear<1000 || iYear>9999) return false;

// 月份是否数字?
if (isNaN(sMonth)) return false;
var iMonth=parseInt(sMonth);
// 月份是否整数?
if (sMonth!=iMonth) return false;
// 月份是否在1-12之间?
if (iMonth<1 || iMonth>12) return false;

// 日期是否数字?
if (isNaN(sDay)) return false;
var iDay=parseInt(sDay);
// 日期是否整数?
if (sDay!=iDay) return false;
// 日期是否在1-31之间?
if (iDay<1 || iDay>31) return false;

if (iDay<29) return true;

// 日期数据是否合法的?
switch (iMonth)
{
case 1:
if (iDay>31) return false;
break;
case 2:
if (IsLeapYear(iYear))
{
if (iDay>29) return false;
}
else
{
if (iDay>28) return false;
}
break;
case 3:
if (iDay>31) return false;
break;
case 4:
if (iDay>30) return false;
break;
case 5:
if (iDay>31) return false;
break;
case 6:
if (iDay>30) return false;
break;
case 7:
if (iDay>31) return false;
break;
case 8:
if (iDay>31) return false;
break;
case 9:
if (iDay>30) return false;
break;
case 10:
if (iDay>31) return false;
break;
case 11:
if (iDay>30) return false;
break;
case 12:
if (iDay>31) return false;
}

return true;

}
function IsLeapYear(Y)
{
// 年份是否为闰年

if (Y % 4 !=0) return false;
if (Y % 400 == 0) return true;
if (Y % 100 == 0) return false;
}
-->
</script>
<%
'**********************
'目的:将日期转换成标准日期字符串
'输入:日期
'输出:日期字符串,如:2002-12-22
'**********************
Function getdatestr(ddate)
dim strtmp
getdatestr = DatePart("yyyy",ddate)
strtmp = trim(DatePart("m",ddate))
if len(strtmp)=1 then strtmp="0" & strtmp
getdatestr = getdatestr & "-" & strtmp
strtmp = trim(DatePart("d",ddate))
if len(strtmp)=1 then strtmp="0" & strtmp
getdatestr = getdatestr & "-" & strtmp
End Function
'**********************
'**********************
'目的:将日期时间转换成标准日期时间字符串
'输入:日期时间
'输出:日期时间字符串,如:2002-12-22
'**********************
Function gettimestr(ddate)
dim strtmp
gettimestr = DatePart("yyyy",ddate)
strtmp = trim(DatePart("m",ddate))
if len(strtmp)=1 then strtmp="0" & strtmp
gettimestr = gettimestr & "-" & strtmp
strtmp = trim(DatePart("d",ddate))
if len(strtmp)=1 then strtmp="0" & strtmp
gettimestr = gettimestr & "-" & strtmp
gettimestr = gettimestr & " " & trim(DatePart("h",ddate))
gettimestr = gettimestr & ":" & trim(DatePart("m",ddate))
End Function
'**********************
'**********************
'目的:计算一月的总天数
'输入:年,月
'输出:天数
'**********************
function getmonthdays(myyear,mymonth)
dim thismonthfirday,nextmonthfirday
'取得当前年月的1日日期
thismonthfirday=myyear & "-" & mymonth & "-1"
'取得下个月1日的日期
nextmonthfirday=dateadd("m",1,thismonthfirday)
'取得当前月的天数
getmonthdays=DateDiff("d",thismonthfirday,nextmonthfirday)
end function
'**********************
'**********************
'目的:返回格式化日期
'输入:任何类型参数
'输出:格式化后的日期
'**********************
Function FormatDateEx(D)
dim varTemp

if IsDate(D) then
varTemp="'" & D & "'"
else
varTemp="NULL"
end if

FormatDateEx=varTemp
End Function
'**********************
'DatePackage End
%>
回复
surensuyu 2004-04-02
function isDateString(sDate)
{ var iaMonthDays = [31,28,31,30,31,30,31,31,30,31,30,31]
var iaDate = new Array(3)
var year, month, day

if (arguments.length != 1) return false
iaDate = sDate.toString().split("-")
if (iaDate.length != 3) return false
if (iaDate[1].length > 2 || iaDate[2].length > 2) return false

year = parseFloat(iaDate[0])
month = parseFloat(iaDate[1])
day=parseFloat(iaDate[2])

if (year < 1900 || year > 2100) return false
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) iaMonthDays[1]=29;
if (month < 1 || month > 12) return false
if (day < 1 || day > iaMonthDays[month - 1]) return false
return true
}
回复
jumpnew929 2004-04-02
最简单的select isDate('2004-01-01')
回复
cjf1009 2004-04-02
mark
回复
发动态
发帖子
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
社区公告
暂无公告