parse方法里指定的pattern必须跟你所想判别的时间字符串一一对应
否则仍然会报错
比如SimpleDateFormat的pattern是你写的"yyyy/MM/dd HHmmss"
但客户端传过来的时间是:1980/05/19 10:20:20,这时就会报错
必须要求是1980/05/19 102020,才能判定为正确的时间字符串

解决方案 »

  1.   

    楼上说的对,如果你的字符串是手工输入的就改一下。例如就可以判断了:
    try
    {
        SimpleDateFormat poYmdFmt=new SimpleDateFormat("yyyy/MM/dd");
        poYmdFmt.parse("1980/05/19 ");
    }
    catch(Exception e)
    {
        System.out.println("非法时间参数")
    }
      

  2.   

    阿,是这样啊!那用这个parse就没有意义了,我就是想要随便输入一个字符串,然后判断是否是合法时间。我原来用的new Date("1980/05/19 " + sTime)判断,如果异常,就是非法时间,但是现在java里不推荐这个方法了,所以我只好换了!大家还有没有好的方法啊?
      

  3.   

    随便输入任意字符串
    然后判定是否合法时间
    这个在java里,除非你写很长很长的if语句(针对SimpleDateFormat的每一个可能做判定)
    否则是不可能实现的如果你的时间是由客户输入
    那么可以让他分别输入年、月、日、时、分秒(或者让他选择)
    然后自己拼成一个pattern
    然后后台用相应的pattern来解析
      

  4.   

    对阿,我原来用的new Date("1980/05/19 " + sTime)就可以随便输入,但是被废止了,所以想请教一下有没有可以代替的,看来是没有了阿!哎,只能限制用户输入了。
      

  5.   

    可以让用户输入 1980-5-19 这种格式
    try
    {  
      String s="2003-3-1";//如果日期为2003/9/4这种格式,把/替换成-
      java.util.Date date1=java.sql.Date.valueOf(s); 
    }
    catch(Exception e)
    {
      System.out.println("it's not a valid Date String");
    }