是否有办法获得严格的日期解析而不是将宽容设置为false?

时间:2013-09-16 14:59:23

标签: java parsing date datetime

我是Java编程的新手,我需要解析一个字符串的日期。格式必须是dd-MM-yyyy,但它与我认为的答案无关。

通过以下方式将该字符串解析为Calendar对象,我正在使用SimpleDateFormat

String example = "16-09-2013";
SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");
formato.setLenient(false);
Calendar cal = new GregorianCalendar();
cal.setTime(format.parse(date));

结果是预期的结果。

问题是它还会正确解析像"16-9-2013"这样的东西(注意当月没有前导0),当发生这种情况时,我宁愿抛出异常并抓住它来适当地通知。< / p>

我限制使用Java SE而没有任何添加(取出Joda Time等),所以我想知道,有没有办法解析日期字符串,以便只有严格遵守格式才能成功?

1 个答案:

答案 0 :(得分:1)

您可以使用正则表达式来检查字符串是否符合预期格式,regex内置于Java SE http://docs.oracle.com/javase/tutorial/essential/regex/

然后你可以使用上面的代码来检查它实际上是一个有效的日期,而不是一些无效的日期,例如正则表达式无法捕获的无效日期。