我是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等),所以我想知道,有没有办法解析日期字符串,以便只有严格遵守格式才能成功?
答案 0 :(得分:1)
您可以使用正则表达式来检查字符串是否符合预期格式,regex内置于Java SE http://docs.oracle.com/javase/tutorial/essential/regex/
然后你可以使用上面的代码来检查它实际上是一个有效的日期,而不是一些无效的日期,例如正则表达式无法捕获的无效日期。