2

我是 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),当发生这种情况时,我更愿意抛出异常并捕获它以适当地通知。

我被限制使用 Java SE 而没有任何添加(这会消耗 Joda Time 等),所以我想知道,有没有办法解析日期字符串,以便它只有在严格符合格式的情况下才能成功?

4

1 回答 1

1

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

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

于 2013-09-16T15:03:51.980 回答