在做一个mis,连接了sql server 2005.界面中有一个文本框,上面是输入日期的.
格式为yyyy-mm-dd.如果对用户的输入做异常处理.
我把它给提交给数据库.可是数据库只能对yyyy-mm-dd格式做处理.
例如20000101(提示输入格式有误)
    2000-01-01(正确)
    2000-01-71(数据库无法报错).
所以现在想在提交给数据库之前变对异常进行处理.
可是现在还没有好的思路,请大家多多帮忙!

解决方案 »

  1.   

    前台界面用javascript正则表达式匹配一下. 或者用javascript对日期处理一下.
      

  2.   

    思想都是:获得用户输入日期的当月所对应的最大天数,然后判断:
    前台js处理的话:function   getMaxDate(Y,   M)   
      {   
          var   d   =   new   Date(   Y   +"/"+   (M+1)   +"/0");   
          return   d.getDate();   
      } 后台 java 处理的话:
    //首先判断输入格式正确
    String[] s = "2000-01-41".split("-");
    if (s[1].startsWith("0"))
    s[1] = s[1].replace("0", "");
    if (s[2].startsWith("0"))
    s[2] = s[2].replace("0", "");
    int month = Integer.parseInt(s[1]);
    Calendar c = Calendar.getInstance();
    c.set(Calendar.MONTH, month - 1);
    int days = c.getActualMaximum(Calendar.DAY_OF_MONTH);
    if(Integer.parseInt(s[2])<days){
    System.out.println("日期中天数输入不合法");
    }
      

  3.   

    /**
     * 获取某年的某个月份的最大天数
     * 
     * @param year
     * @param month
     * @return
     */
    public static int getMaxDay(int year, int month) {
    Calendar c = Calendar.getInstance();
    c.set(Calendar.YEAR, year);
    c.set(Calendar.MONTH, month - 1);
    return c.getActualMaximum(Calendar.DAY_OF_MONTH);
    }
      

  4.   

    1: 利用正则表达式来判断  在java.util.regex 包中2:SampleDateFormat 来处理  并catch Exception () 并往上 throw
    2楼的方法可行