日期:2014-05-16  浏览次数:20509 次

大家来讨论下js判断,字符串中我符号为什么会被去掉
此贴只是讨论,分很少,大家莫怪。
这里有两个时间before(开始时间),nTime(结束时间)。
在判断结束时间是否大于当前时间、和开始时间不得大于结束时间处,并未对before,nTime进行处理。
但为什么还是能比较,js有运用了什么机制可以让时间直接比较呢。
大家可以发表自己的观点!
js新手,莫怪!
//验证时间的合法性,30天有有效。
function verifyDate(){
var flag = true;
var before = $("#bTime").val();
var nTime=$("#nTime").val();
var today=new Date();
var year=today.getFullYear()+"";
var month=today.getMonth()+1+"";
var day=today.getDate()+"";
if(day.length==1){
day=0+""+day+"";
}
var now=year+"-"+month+"-"+day;
if("" != before && "" != nTime){
var btemp=before.substr(0,10);
var bsplit=btemp.split("-");
//将时间转换为date
var bTime=new Date(bsplit[0],bsplit[1]-1,bsplit[2]);
var ntemp=nTime.substr(0,10);
var nsplit=ntemp.split("-");
var next=new Date(nsplit[0],nsplit[1]-1,nsplit[2]);
                //此处未做处理,但任然可以教教
                //时间格式  2013-12-05 15:15:15
if(ntemp>now){
alert("结束时间不得超过当前时间,请检查!");
flag=false;
return flag;
}
if(before>nTime){
alert("错误的修改时间,请检查!");
flag=false;
return flag;
}
//判断是否大于30天。30*24*60*60*1000,精确到毫秒
if(next.getTime()-bTime.getTime()>30*24*60*60*1000){
alert("只能查询30天以内的数据!");
flag=false;
return flag;
}
}
}

------解决方案--------------------
你可以看成 表达式函数

比如  +  那么 就是一个 2元函数 名字是add
a+b  实际调用的 就是   add(a,b)

其他调用以此类推

调用的函数里要涉及类型转换
a>b   --->     f(a,b) 函数里面 对于 a b 会进行类型转换 转换成需要的类型 如果不能转那么就报错