用format来格式化,能成功就正确

解决方案 »

  1.   

    format没用,19810332会自动变成19810401的.
      

  2.   

    setLenient(false),就不会自动变了
      

  3.   

    用正则表达式,
    比如:
    (19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])Date yyyy-mm-dd
    1900-01-01 through 2099-12-31^_^
      

  4.   

    回复人: abc_xyz() ( ) 信誉:100  2004-12-21 15:20:00  得分: 0  
     
     
       format没用,19810332会自动变成19810401的.  
     
    ------------------再对两个字符串比较.看是不是一样,不样则说明不对!
      

  5.   

    自己写一个方法,把日期字符串substring下来
    年,月,日一个一个比较
    虽然比较麻烦,但可靠
      

  6.   

    import java.text.ParseException;/**
     * User: zhuzf
     * Date: 2004-12-23
     * Time: 9:21:53
     */
    public class Test {
        /**
         * 是否有效的日期
         *
         * @param dateStr
         * @param pattern
         * @return
         */
        public static boolean isValidDate(String dateStr, String pattern) {
            java.text.SimpleDateFormat df = new java.text.SimpleDateFormat(pattern);
            try {
                df.setLenient(false);
                df.parse(dateStr);
                return true;
            } catch (ParseException e) {
                return false;        }
        }    public static void main(String[] args) throws Exception {
            System.out.println("19810331 is valid? " + isValidDate("19810331", "yyyyMMdd"));
            System.out.println("19810332 is valid? " + isValidDate("19810332", "yyyyMMdd"));
        }
    }