我给一酒店做预定功能.客户要求预定者输入的时间不能在当前时间之前,可以是当天.用JSP怎么做?
谢谢!另:取到的预住时间是String的,还需要转换一下.

解决方案 »

  1.   

    function checkIsValidDate(str)
    {
        //如果为空,则通过校验
        if(str == "")
            return true;
        var pattern = /^((\\d{4})|(\\d{2}))-(\\d{1,2})-(\\d{1,2})$/g;
        if(!pattern.test(str))
            return false;
        var arrDate = str.split("-");
        if(parseInt(arrDate[0],10) < 100)
            arrDate[0] = 2000 + parseInt(arrDate[0],10) + "";
        var date =  new Date(arrDate[0],(parseInt(arrDate[1],10) -1)+"",arrDate[2]);
        if(date.getYear() == arrDate[0]
           && date.getMonth() == (parseInt(arrDate[1],10) -1)+""
           && date.getDate() == arrDate[2])
            return true;
        else
            return false;
    }//~~~function checkDateEarlier(strStart,strEnd)
    {
        if(checkIsValidDate(strStart) == false || checkIsValidDate(strEnd) == false)
            return false;
        //如果有一个输入为空,则通过检验
        if (( strStart == "" ) || ( strEnd == "" ))
            return true;
        var arr1 = strStart.split("-");
        var arr2 = strEnd.split("-");
        var date1 = new Date(arr1[0],parseInt(arr1[1].replace(/^0/,""),10) - 1,arr1[2]);
        var date2 = new Date(arr2[0],parseInt(arr2[1].replace(/^0/,""),10) - 1,arr2[2]);
        if(arr1[1].length == 1)
            arr1[1] = "0" + arr1[1];
        if(arr1[2].length == 1)
            arr1[2] = "0" + arr1[2];
        if(arr2[1].length == 1)
            arr2[1] = "0" + arr2[1];
        if(arr2[2].length == 1)
            arr2[2]="0" + arr2[2];
        var d1 = arr1[0] + arr1[1] + arr1[2];
        var d2 = arr2[0] + arr2[1] + arr2[2];
        if(parseInt(d1,10) > parseInt(d2,10))
           return false;
        else
           return true;
    }//~~~
      

  2.   

    谢谢sureyor! 不过,我是要用JAVA实现服务器端的验证,不是JAVASCRIPT的前台校验.
      

  3.   

    java端更容易啦:public static boolean checkDateEarlier(String date1, String date2) throws Exception {
      DateFormat df = new SimpleDateFormat("yyy-MM-dd");
      Date d1 = df.parse(date1);
      Date d2 = df.parse(date2);
      if (d1.before(d2)) {
        return true;
      }
      return false;
    }public static void main(String[] args) throws Exception {
      System.out.println(Ruader.checkDateEarlier("2006-02-01", "2006-02-01"));
      System.out.println(Ruader.checkDateEarlier("2006-01-30", "2006-02-01"));
      System.out.println(Ruader.checkDateEarlier("2006-02-22", "2006-02-01"));
    }结果输出:false,true,false
      

  4.   

    上面这位兄弟是不是都没看清楚需求哦   都说当天时间可以了啊  所以呢    :
    System.out.println(Ruader.checkDateEarlier("2006-02-01", "2006-02-01"));
        应该是输出   true  才对吧    所以这个功能还是没实现  哈哈  需要改下
      

  5.   

    -_-,基本函数都给你啦,剩下的自己不能改呀,I fule you!!!
      

  6.   

    public static boolean checkDateEarlier(String date1) throws Exception {
      DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
      Date d1 = df.parse(date1);
      Date d2 = df.parse(df.format(new Date()));
      if (d1.before(d2)) {
        return true;
      }
      return false;
    }
      

  7.   

    嘎嘎  学习  谢谢sureyor
      

  8.   

    不错不错  sureyor()   果然是高手啊    小的我佩服佩服
      

  9.   

    api的基本问题,要自己学习的.
      

  10.   

    API
    date1.before(date2);date1.after(date2);