这是一个例子:
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不是有效的日期字符串.但是该功能打印“2011年12月12日星期一00:00:00 PST”,并且不会抛出ParseException.
任何人都可以告诉我如何让SimpleDateFormat将“2011/12 / 12aaa”视为无效的日期字符串并抛出异常?
解决方法
解析(…)中的JavaDoc说明如下:
parsing does not necessarily use all characters up to the end of the string
看来,您无法使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() ); }
基本上,您检查分析是否消耗整个字符串,如果不是您有无效的输入.