public boolean IsDate(String TxtData) {
TxtData = TxtData.trim(); if ( TxtData.length() > 0 ) { if ( !IsNumeric(TxtData) || !IsFullLen(TxtData,8) ) {
return false;
} int y = new Integer(TxtData.substring(0,4)).intValue();
int m = new Integer(TxtData.substring(4,6)).intValue();
int d = new Integer(TxtData.substring(6  )).intValue(); try {
Calendar date = new GregorianCalendar( y, m-1, d );
date.setLenient(false);
date.get(date.DATE);   //擔晅偑懨摉偱側偄応崌偵椺奜傪敪惗偝偣傞
}
catch(java.lang.IllegalArgumentException e) {
                info="调用IsDate()方法时异常:"+e.toString();
return false;
} }
return true;
}

解决方案 »

  1.   

    如果输入的格式符合yyyy-mm-dd hh:mi:ss
    这个格式就可以用Timestamp类的valueOf方法来转换。
    否则的话就用SimpleDateFormat类SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
    java.util.Date date = fmt.parse("2002-11-15");
    System.out.println("Date is " + date.toString);
      

  2.   

    首先把Date转换成String,然后……有个String在手,你还不是想怎么判断就怎么判断了?
      

  3.   

    下面的更好一点,可以判断出日起是否合法,
    相当于Calendar的setLenient(false);SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    String rawDate = "2002-11-20";
    java.util.Date date = format.parse(rawDate);
    if (rawDate.equals(format.format(date))) {
        System.out.println("Date is "+date.toString());
    }else{
        throw new IllegalArgumentException("Illegal date!");
    }
      

  4.   

    只能按不同的格式,一个一个去TRY。
    智能化的日期输入其实后台处理是很笨的。呵呵。
      

  5.   

    protected static SimpleDateFormat dateFormat = null;
    static {
        dateFormat = new SimpleDateFormat("", Locale.getDefault());
    }
    public static String formatDate(Date date, String pattern) {
        synchronized (dateFormat) {
          dateFormat.applyPattern(pattern);
          return dateFormat.format(date);
        }
      }
      

  6.   

    public boolean isDate(String date){
        try{
          return java.text.DateFormat.getDateInstance().parse(date)!=null;
        }catch(java.text.ParseException e){
          return false;
        }
      }
      

  7.   

    我写过的一个方法
    public static String formatDateStr( String DateStr )
    {
        SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
        if( DateStr.length()==6 ) {
            df = new SimpleDateFormat("yyMMdd");
        }else if( DateStr.length()==10 ){
            df = new SimpleDateFormat("yyyy/MM/dd");
        }
            try {
             Date dd = df.parse(DateStr);
             String ddp = df.format(dd);
             if( ddp.equals(DateStr) )
             {
                if( DateStr.length()==10 ) return DateStr;
                if( DateStr.length()==6 )
                    if ( Integer.parseInt(DateStr.substring(0,3))<50 )
                        DateStr = "20"+DateStr;
                    else if( Integer.parseInt(DateStr.substring(0,3))>=50 )
                        DateStr = "19"+DateStr;
                String year =DateStr.substring(0,4);
                String mon = DateStr.substring(4,6);
                String day = DateStr.substring(6,8);
                return year+mon+day;
             }
             else
              return null ;
    }catch( Exception e )
    {
    e.printStackTrace();
    return null ;
    }

    }
    }