在Java中将String解析为Date时出错

时间:2012-11-23 14:58:20

标签: java parsing date

是的,另一个Java Date帖子:)

我的问题:

简单的标准代码,如果插入的日期是请求的形式(dd / MM / yyyy),则用于测试:

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
try {

   sdf.parse(strDate); 

} catch(ParseException e) {

   // err

}
  

strDate =“10-12-2012”----> sysout = err(ok)

     

strDate =“2012-11-10”----> sysout = err(ok)

     

strDate =“15/10/2011”----> sysout = parse(ok)

问题:

  

strDate =“2012/12/15”----> sysout =我期待错误的日期   结果解析如“Tue Jun 03 00:00:00 CET 21”

谁知道???

1 个答案:

答案 0 :(得分:9)

只需将setLenient设置为 false 即可。

FROM API:

setLenient method:

  

指定日期/时间解析是否宽松。同   宽松解析,解析器可以使用启发式来解释输入   与该对象的格式不完全匹配。通过严格的解析,   输入必须与此对象的格式匹配。

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
try {
  sdf.setLenient(false);
  System.out.println(sdf.parse("2012/12/15")); 
} catch(ParseException e) {
  e.printStackTrace();
}