您可以使用实际解析并检查它是否是有效日期dd-mm-yyyy,而不仅仅是检查,这将允许输入.99-99-9999SimpleDateFormat
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
formatter.parse("99-99-9999");
formatter.parse("18-07-2013");
Run Code Online (Sandbox Code Playgroud)
如果日期无效,它将抛出ParseException,然后您可以适当地捕获并处理错误.
编辑:
正如波希米亚人指出的那样,这实际上并没有在99-99-9999输入上引发异常.相反,它有点"滚动"将坏日期解释为合法日期.我认为他们可能是故意这样做的,以使日期算术更容易.例如,解析后10-13-2000变为10-1-2001(没有第13个月,所以它变成了下一年的第1个月).如果你想让它抛出异常,你需要告诉它不宽容:
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
formatter.setLenient(false); // <== Added this line
formatter.parse("99-99-9999");
formatter.parse("18-07-2013");
Run Code Online (Sandbox Code Playgroud)