这是一个例子:
public MyDate() throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/d"); sdf.setLenient(false); String t1 = "2011/12/12aaa"; System.out.println(sdf.parse(t1)); }
2011/12 / 12aaa不是有效的日期字符串。但是,该函数将打印“ PST 2011 Mon Dec 12 00:00:00 PST 2011”,并且不会引发ParseException。
谁能告诉我如何让SimpleDateFormat将“ 2011/12 / 12aaa”视为无效的日期字符串并引发异常?
JavaDoc on parse(...)指出以下内容:
parse(...)
解析不一定使用所有字符,直到字符串末尾
似乎无法SimpleDateFormat抛出异常,但是可以执行以下操作:
SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/d"); sdf.setLenient(false); ParsePosition p = new ParsePosition( 0 ); String t1 = "2011/12/12aaa"; System.out.println(sdf.parse(t1,p)); if(p.getIndex() < t1.length()) { throw new ParseException( t1, p.getIndex() ); }
基本上,您检查解析是否消耗了整个字符串,如果不是,则输入无效。