Java日期解析特定格式

Dav*_*vid 2 java parsing date

我写了一小段代码来揭露我的问题.

public class date {
    public static void main(String args[]) {
        SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy",Locale.ENGLISH);
        System.out.println("The date format is : dd-MM-yyyy.");
        String date1 = "20-06-2012";
        System.out.println("The date1 is : " + date1);
        String date2 = "2012-06-20";
        System.out.println("The date2 is : " + date2);
        try {
            System.out.println(formatter.parse(date1).toString());
            System.out.println(formatter.parse(date2).toString());
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出看起来像这样:

The date format is : dd-MM-yyyy.
The date1 is : 20-06-2012
The date2 is : 2012-06-20
Wed Jun 20 00:00:00 EDT 2012
Mon Dec 03 00:00:00 EST 25
Run Code Online (Sandbox Code Playgroud)

问题是我希望在提交的日期与指定的模式不匹配时引发错误SimpleDateFormat,不幸的是,看起来它看到字符串中正确位置的数字由短划线分隔,因此它可以通过.还有其他工具可以做到这一点,还是我错误地使用了SimpleDateFormat

Dav*_*ton 9

使用SimpleDateFormat.setLenient(boolean)和设置为false绕过SDF解析启发式.

然后切换到Joda-Time ;)