Java SimpleDateFormat正在解析错误的日期

时间:2013-10-28 09:15:12

标签: java simpledateformat

我编写了以下代码段:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
 sdf.setLenient(false);
 currentString = currentString.trim();
 try{
    Date date = sdf.parse(currentString);
 } catch (java.text.ParseException e) {
    return ""; 
 }

我希望它以yyyy-MM-dd格式解析日期,即。它应该像2013-10-28一样解析日期。

虽然它工作正常,但它也解析了错误的输入,如 2013-10-28aaab 。理想情况下,如果给出这种非法日期,它应该抛出异常。

如何限制此类非法日期模式?

2 个答案:

答案 0 :(得分:2)

使用正则表达式匹配输入

类似

"/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/"

答案 1 :(得分:0)

只需检查字符串长度。顺便说一句,你应该将lenient设置为true,否则将允许无效日期(2013-02-31)。