您应该使用
DateFormat.setLenient(false):
SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy");df.setLenient(false);df.parse("03/88/2013"); // Throws an exception我不确定是否可以捕获 到 您想要的 所有内容 -我似乎还记得,即使
setLenient(false)它比您预期的宽容得多-
但它应该捕获无效的月份数。
我认为它不会捕获尾随文本,例如“ 03/01/2013
sjsjsj”。您可能使用其中的重载
parse接受
ParsePosition,然后在解析完成后检查当前的解析索引:
ParsePosition position = new ParsePosition(0);Date date = dateFormat.parse(text, position);if (position.getIndex() != text.length()) { // Throw an exception or whatever else you want to do}您还应该查看Joda Time API,它很可能允许进行更严格的解释-
而且无论如何,它通常是一种更干净的日期/时间API。



