我编写了以下代码段:
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 。理想情况下,如果给出这种非法日期,它应该抛出异常。
如何限制此类非法日期模式?
答案 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)。