执行下一段:
java.text.SimpleDateFormat fmt = new java.text.SimpleDateFormat("yyyyMMddHHmmss");
fmt.setLenient(false);
System.out.println(fmt.parse("20000101132345"));
结果是:Sat Jan 01 13:23:45 CST 2000再执行下一段(注意:20000101132345-〉2000010113234):
java.text.SimpleDateFormat fmt = new java.text.SimpleDateFormat("yyyyMMddHHmmss");
fmt.setLenient(false);
System.out.println(fmt.parse("2000010113234"));
结果是:Sat Jan 01 13:23:04 CST 2000按理来说执行第二段代码的时候应该抛出异常才对!要不然太不严格了!!!
就是说2000010113234和20000101132304执行结果是一样的!
你们觉得呢?

解决方案 »

  1.   

    这时候只能这么解决了
    if (strDate.length() < 14) {
       ParseException e = new ParseException(strDate, 0);
       throw e;
    }再判断长度
      

  2.   

    java.text.SimpleDateFormat fmt = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            fmt.setLenient(false);
            System.out.println(fmt.parse("2000-1-1 1:1:1"));这样处理还是比较合理的,上面的例子就可以
      

  3.   

    java.text.SimpleDateFormat fmt = new java.text.SimpleDateFormat("y-M-d H:m:s");
            fmt.setLenient(false);
            System.out.println(fmt.parse("2000-11-11 11:11:11"));
      

  4.   

    @treeroot(旗鲁特) 这么看得话也有道理! 呵呵
      

  5.   

    应该给sun一些建议最好再加一个属性,用来定义转换的方式,类似于setLenient的一个属性
      

  6.   

    java.text.SimpleDateFormat fmt = new java.text.SimpleDateFormat("yyyyMMddHHmmss");
    fmt.setLenient(false);
    System.out.println(fmt.parse("2000010113234."));这是也返回:Sat Jan 01 13:23:04 CST 2000
    这样一来判断长度也是没有用的!!!