http://blog.csdn.net/guoweidong/archive/2004/08/22/JavaScrip.aspx

解决方案 »

  1.   

    关键字     javascript,数据检测 //函数名:chksafe//功能介绍:检查是否含有"'",'\\',"/"//参数说明:要检查的字符串//返回值:0:是  1:不是function chksafe(a){  return 1;/* fibdn = new Array ("'" ,"\\", "、", ",", ";", "/"); i=fibdn.length; j=a.length; for (ii=0;ii<i;ii++) { for (jj=0;jj<j;jj++)  { temp1=a.charAt(jj);   temp2=fibdn[ii];   if (tem';p1==temp2)   { return 0; }  } } return 1;*/ }
    //函数名:chkspc
    //功能介绍:检查是否含有空格
    //参数说明:要检查的字符串
    //返回值:0:是  1:不是
    function chkspc(a)
    {
     var i=a.length;
     var j = 0;
     var k = 0;
     while (k<i)
     {
      if (a.charAt(k) != " ")
       j = j+1;
      k = k+1;
     }
     if (j==0)
     {
      return 0;
     }
     
     if (i!=j)
     { return 2; }
     else
     {
      return 1;
     }
    }
    //函数名:chkemail
    //功能介绍:检查是否为Email Address
    //参数说明:要检查的字符串
    //返回值:0:不是  1:是
    function chkemail(a)
    { var i=a.length;
     var temp = a.indexOf('@');
     var tempd = a.indexOf('.');
     if (temp > 1) {
      if ((i-temp) > 3){
       
        if ((i-tempd)>0){
         return 1;
        }
       
      }
     }
     return 0;
    }//opt1 小数     opt2   负数
    //当opt2为1时检查num是否是负数
    //当opt1为1时检查num是否是小数
    //返回1是正确的,0是错误的
    function chknbr(num,opt1,opt2)
    {
     var i=num.length;
     var staus;
    //staus用于记录.的个数
     status=0;
     if ((opt2!=1) && (num.charAt(0)=='-'))
     {
      //alert("You have enter a invalid number.");
      return 0;
     
     }
    //当最后一位为.时出错
     if (num.charAt(i-1)=='.')
     {
      //alert("You have enter a invalid number.");
      return 0;
     } for (j=0;j<i;j++)
     {
      if (num.charAt(j)=='.')
      {
       status++;
      }
      if (status>1) 
      {
      //alert("You have enter a invalid number.");
      return 0;  
      }
      if (num.charAt(j)<'0' || num.charAt(j)>'9' )
      {
       if (((opt1==0) || (num.charAt(j)!='.')) && (j!=0)) 
       {
        //alert("You have enter a invalid number.");
        return 0;
       }
      }
     }
     return 1;
    }//函数名:chkdate
    //功能介绍:检查是否为日期
    //参数说明:要检查的字符串
    //返回值:0:不是日期  1:是日期
    function chkdate(datestr)
    {
     var lthdatestr
     if (datestr != "")
      lthdatestr= datestr.length ;
     else
      lthdatestr=0;
      
     var tmpy="";
     var tmpm="";
     var tmpd="";
     //var datestr;
     var status;
     status=0;
     if ( lthdatestr== 0)
      return 0
     for (i=0;i<lthdatestr;i++)
     { if (datestr.charAt(i)== '-')
      {
       status++;
      }
      if (status>2)
      {
       //alert("Invalid format of date!");
       return 0;
      }
      if ((status==0) && (datestr.charAt(i)!='-'))
      {
       tmpy=tmpy+datestr.charAt(i)
      }
      if ((status==1) && (datestr.charAt(i)!='-'))
      {
       tmpm=tmpm+datestr.charAt(i)
      }
      if ((status==2) && (datestr.charAt(i)!='-'))
      {
       tmpd=tmpd+datestr.charAt(i)
      } }
     year=new String (tmpy);
     month=new String (tmpm);
     day=new String (tmpd)
     //tempdate= new String (year+month+day);
     //alert(tempdate);
     if ((tmpy.length!=4) || (tmpm.length>2) || (tmpd.length>2))
     {
      //alert("Invalid format of date!");
      return 0;
     }
     if (!((1<=month) && (12>=month) && (31>=day) && (1<=day)) )
     {
      //alert ("Invalid month or day!");
      return 0;
     }
     if (!((year % 4)==0) && (month==2) && (day==29))
     {
      //alert ("This is not a leap year!");
      return 0;
     }
     if ((month<=7) && ((month % 2)==0) && (day>=31))
     {
      //alert ("This month is a small month!");
      return 0;
     
     }
     if ((month>=8) && ((month % 2)==1) && (day>=31))
     {
      //alert ("This month is a small month!");
      return 0;
     }
     if ((month==2) && (day==30))
     {
      //alert("The Febryary never has this day!");
      return 0;
     }
     
     return 1;
    }
      

  2.   

    这个贴子,已经号几天了,我一直在关注。楼上大虾介绍了几个很有用的函数,但好像不能解决楼主的问题.
    js难道不能计算日期相减吗?我不知道,期待大虾。
    我有一个笨方法,
    date类型数据有一个parse方法,能够得到该日期距起点(1970 年 1 月 1 日)的毫秒数。
    那么两个日期型parse以后再相减就得到了两个日期之间的毫秒数。再变换。
    dataDiff=parseInt(parse(date1))-parseInt(parse(date2))//得到了日期差的毫秒数。
    赫赫,我都不好意思写下去了。
      

  3.   

    后者脸皮写玩吧。
    dateDiff=dateDiff/1000/60/60/24
      

  4.   

    以上得到的有可能是小数,需要取整。js好像没有整除运算符。只好自己再处理了。
    dataDiff=parseInt(parse(date1))-parseInt(parse(date2))//得到了日期差的毫秒数。
    dateDiff=round(dateDiff/1000/60/60/24-0.5)//即使2.9天也算2天,所以要把它变成2.4
    //如果本来是2.3,减0.5后是1.8,round后仍然是2天。
      

  5.   

    function DateDiff(dayfrom,dayto)
    {
    var y,m,d,days_diff=0;
    y=dayfrom.substring(0,4);
    m=dayfrom.substring(5,7);
    d=dayfrom.substring(8,10);
    var check_from=new Date(y,m-1,d); 
    y=dayto.substring(0,4);
    m=dayto.substring(5,7);
    d=dayto.substring(8,10);
      var check_to=new Date(y,m-1,d);
      var days_diff=(check_to.valueOf()-check_from.valueOf())/86400000; 
      
      return days_diff;
    }
    传入的日期格式通常各种各样,所以中间有一段取得年月日的地方,你可以根据你的实际情况改一下
    当前格式yyyy-mm-dd

    var days=DateDiff('2004-01-02','2004-01-04');
    alert(days);//2
      

  6.   

    <script language="JavaScript">
    <!--
    //计算两个日期的差,跟VB里的DateDiff差不多
    function dateDiff(sopn,nDate,eDate){
    var msDiff=Date.parse(eDate)-Date.parse(nDate);
    switch(sopn){
    case 'ms':return msDiff; //毫秒,好像只能精确到秒,1000以下的都被忽略了
    case 'se':return parseInt(msDiff/1000); //秒
    case 'mi':return parseInt(msDiff/1000/60); //分钟
    case 'hr':return parseInt(msDiff/1000/60/60); //小时
    case 'dy':return parseInt(msDiff/1000/60/60/24); //天
    case 'mn':return parseInt((eDate.getFullYear()-nDate.getFullYear())*12+eDate.getMonth()-nDate.getMonth()); //月
    case 'yr':return eDate.getFullYear()-nDate.getFullYear(); //年
    }
    }
    //给一个日期加上多少得到另外一个日期
    function dateAdd(sopn,ival,sDate){
    var rDate;
    var lngDate=Date.parse(sDate);
    switch(sopn){
    case 'ms': //毫秒,只能精确到秒,1000以下的都被忽略了
    rDate=new Date(lngDate+ival);
    return rDate;
    case 'se': //秒
    rDate=new Date(lngDate+ival*1000);
    return rDate;
    case 'mi': //分钟
    rDate=new Date(lngDate+ival*1000*60);
    return rDate;
    case 'hr': //小时
    rDate=new Date(lngDate+ival*1000*60*60);
    return rDate;
    case 'dy': //天
    rDate=new Date(lngDate+ival*1000*60*60*24);
    return rDate;
    //月不知道该怎么算了 2004-3-31减去一个月该得到2004-2-29还是2004-2-1还是2004-1-30?
    //年就不用说了把?直接把年份加上去就可以了
    }
    }
    var dt1=new Date(1999,10,5);
    var dt2=new Date();
    alert(dateDiff('ms',dt2,dateAdd('ms',11200,dt2)));
    -->
    </script>
      

  7.   

    function dateAdd(date1,intMs)//第一个参数为日期型,第二个为整型,要加的毫秒数,需要转
    {
      ms=parseInt(Date.parse(date1));
      ms=ms+intMs;
      date1 = new Date(ms);
      return date1;
    }
    进攻参考
      

  8.   

    function dateDiff(date1,date2)//第一个参数为日期型,第二个为日期型,返回整型
    {
      diff=parseInt(Date.parse(date1))-parseInt(Date.parse(date2))
      diffDay=round(diff/1000/60/60/24-0.5);
      return diffDay;
    }