下面是一个例子:
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不是有效的日期字符串。但是函数打印"Mon Dec 12 00:00:00 PST 2011"并且没有抛出ParseException。
有人能告诉我如何让SimpleDateFormat将"2011/12/12aaa"视为无效的日期字符串并抛出异常吗?
7条答案
按热度按时间8ljdwjyq1#
parse(...)
上的JavaDoc声明如下:分析不一定使用字符串末尾之前的所有字符
看起来你不能让
SimpleDateFormat
抛出异常,但是你可以做以下事情:基本上,检查解析是否消耗了整个字符串,如果没有,则输入无效。
g0czyy6m2#
检查日期是否有效以下方法返回日期是否有效,否则返回false。
看看下面的类,它可以检查日期是否有效
示例
db2dz4w83#
Java 8本地日期可用于:
如果输入变元为
"2011/12/12aaaaaaaaa"
,则输出为false
;如果输入参数为
"2011/12/12"
,则输出为true
1hdlvixo4#
在成功解析整个模式字符串
SimpleDateFormat
之后,它将停止评估要解析的数据。628mspwn5#
请看方法文档,其中写道:
ParseException if the beginning of the specified string cannot be parsed
.方法源代码与javadoc:
hrirmatl6#
可以使用
ParsePosition
类或sdf.setLenient(false)
函数文档:设置宽限期(布尔值)
nfzehxib7#
只需设置
sdf.setLenient(false)
即可。