2

我编写了以下代码片段:

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-ddie 格式解析日期。它应该像2013-10-28.

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

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

4

2 回答 2

2

使用正则表达式匹配输入

就像是

"/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/"
于 2013-10-28T09:21:22.537 回答
0

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

于 2013-10-28T09:29:08.310 回答